SQLクエリを実行し、クエリ結果をテーブル形式で電子メールで送信するシェルスクリプトを作成するにはどうすればよいですか?

SQLクエリを実行し、クエリ結果をテーブル形式で電子メールで送信するシェルスクリプトを作成するにはどうすればよいですか?

PUTTYでSHELLスクリプトを使用してSQLクエリを実行し、上部にヘッダーとメッセージ行を含む電子メール本文のテーブル形式で結果を送信する必要があります。これまでこれを書いていますが、結果を表形式で取得することはできません。

#! /bin/ksh
sqlplus -s user/pass @sid > /dev/null << EOF 
whenever sqlerror exit 4;
set newpage 0
set space 0
set feedback off
set head off
set echo off
set pagesize 0
set serverout on
set trimspool on
set linesize 3000
spool $CSVFILE
select * from table;
spool off;   
exit 0;
EOF
mailx -s "Subject Line" [email protected] < $CSVFILE
exit 0

SQLは正常に実行され、データはCSVFILEに格納されます。私が望む結果は、表形式で電子メール本文の電子メールアドレスに送信し、テーブルの上に次のメッセージ行も含める必要があります。 おおよその形式のメールの例

エラーはありません。ただし、SET HEAD ON後もCSVFILEにヘッダーはありません。また、「mail -a(content-type)」ソリューションを試しましたが、「-a」を使用するとエラーが発生します。

ベストアンサー1

シェルは良いツールではありません。

より良い解決策は、データをファイルにダンプしてからファイルを使用または再フォーマットすることawkです。perlpython

より良い方法は、コンテンツ全体をデータベースに作成するか、perlデータベースpythonに接続し、SQL文を実行し、データをダウンロードしてフォーマットすることです。

もう一つの方法は、オンラインでツールを検索または作成することですexport2csv(githubには複数のバージョンがあります)。あなたの環境で動作するものを見つけます。通常、SQL文と出力ファイルを定義する簡単な方法があります。

データベースへのODBC接続があり(unixODBCうまく機能)、C ++コードをコンパイルできる場合は、鉱山を試してみてくださいnisqlhttps://github.com/White-Owl/nisql

おすすめ記事