SQLクエリ出力をHTMLテーブル形式の出力として表示する方法。出力をhtmlテーブル形式で表示するシェルスクリプトコードがあります。入力はSQLクエリから取得されますが、正しい出力を取得できません。構造化されていないヘッダーとデータを取得することは、最初の列の値のみを取り、残りはテーブル形式ではなく1つずつ形式で表示されることを意味します。誰でもこの問題を解決するのに役立ちますか?よろしくお願いします。これは私のコードです。 #カスタムテーブルからデータを取得するSQLクエリ。
#!/bin/bash
output_file="output.html"
temp_file="temp.txt"
delimiter="|"
sql_query="SELECT 'REQUEST_ID' AS \"REQUEST_ID\",
'REQUESTED_BY' AS \"REQUEST_BY\",
'USER_NAME' AS \"USER_NAME\",
'REQUEST_DATE' AS \"REQUEST_DATE\",
'CON_PRG_NAME' AS \"CON_PRG_NAME\",
'OUTFILE_NAME' AS \"OUTFILE_NAME\",
'FILE_MOVED_STATUS' AS \"FILE_MOVED_STATUS\",
'CON_STATUS_CODE' AS \"CON_STATUS_CODE\",
'ORG_ID' AS \"ORG_ID\"
FROM DUAL
UNION ALL
SELECT TO_CHAR(request_id),
TO_CHAR(requested_by),
user_name,
TO_CHAR(request_date),
concurrent_program_name,
outfile_name,
file_moved_status,
status_code,
TO_CHAR(org_id)
FROM xx_concurrent_stg
WHERE concurrent_program_name = '$concurrent_program_name'
AND request_date BETWEEN TO_DATE('$from_date', 'DD-MON-YY') AND TO_DATE('$to_date', 'DD-MON-YY');"
# Run the SQL query and save the output to a temporary file
sqlplus -S apps/apps@EBSDB <<EOF > $temp_file
SET PAGESIZE 0
SET FEEDBACK OFF
SET HEADING OFF
SET COLSEP "$delimiter"
SET TRIMSPOOL ON
$sql_query
EXIT;
EOF
# Generate the HTML table from the temporary file
awk -v delimiter="$delimiter" '
BEGIN {
print "<table border=1 cellspacing=2 cellpadding=2>"
FS = delimiter
}
NR == 1 {
print "<tr>"
for (i = 1; i <= NF; i++) {
printf "<th>%s</th>", $i
}
print "</tr>"
}
NR > 1 {
print "<tr>"
for (i = 1; i <= NF; i++) {
printf "<td>%s</td>", $i
}
print "</tr>"
}
END {
print "</table>"
}' $temp_file > $output_file