自動化しようとしているSQLスクリプトがいくつかあります。以前は、SQL * Plusを使用し、bashスクリプトから手動でsqlplusバイナリを呼び出していました。
ただし、DBに接続する方法があるかどうかを確認し、bashスクリプトの内部からスクリプトを呼び出すようにしています。これにより、date
を挿入して、クエリを相対的に実行できます。過去の特定の日数。
少し混乱しています。 bashスクリプト内からsqlplusを呼び出すことができるはずです。これは最初のステートメントで行っていたものかもしれません
Bashスクリプト内で以下を実行してみてください。
#!/bin/bash
echo Start Executing SQL commands
sqlplus <user>/<password> @file-with-sql-1.sql
sqlplus <user>/<password> @file-with-sql-2.sql
スクリプトにデータを渡すことができるようにしたい場合は、スクリプトに引数を渡すことでSQLPlusを介して行うことができます。
file-with-sql-1.sqlの内容
select * from users where username='&1';
次に、値を渡してsqlplusを呼び出すようにbashスクリプトを変更します。
#!/bin/bash
MY_USER=bob
sqlplus <user>/<password> @file-with-sql-1.sql $MY_USER
「ヒアドキュメント」を使用して同じことを行うこともできます。
VARIABLE=SOMEVALUE
sqlplus connectioninfo << HERE
start file1.sql
start file2.sql $VARIABLE
quit
HERE
たぶん、SQLクエリをsqlplusにパイプできます。 mysqlで機能します。
echo "SELECT * FROM table" | mysql --user=username database
Sourceforgeでjdbcsqlプロジェクトを使用しました。
* nixシステムでは、標準出力に結果のcsvストリームを作成します。
Java -Djava.security.egd=file///dev/urandom -jar jdbcsql.jar -d oracledb_SID -h $Host -p 1521 -U some_username -m Oracle -P "$PW" -f Excel -s "," "$1"
-Djava.security.egd=file///dev/urandom
パフォーマンスを大幅に向上
Windowsコマンドは似ています: http://jdbcsql.sourceforge.net/ を参照してください