web-dev-qa-db-ja.com

bashスクリプト内からSQLをどのように実行しますか?

自動化しようとしているSQLスクリプトがいくつかあります。以前は、SQL * Plusを使用し、bashスクリプトから手動でsqlplusバイナリを呼び出していました。

ただし、DBに接続する方法があるかどうかを確認し、bashスクリプトの内部からスクリプトを呼び出すようにしています。これにより、dateを挿入して、クエリを相対的に実行できます。過去の特定の日数。

15
Aaron

少し混乱しています。 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
20
RC.

「ヒアドキュメント」を使用して同じことを行うこともできます。

VARIABLE=SOMEVALUE

sqlplus connectioninfo << HERE
start file1.sql
start file2.sql $VARIABLE
quit
HERE
9
xdhmoore

たぶん、SQLクエリをsqlplusにパイプできます。 mysqlで機能します。

echo "SELECT * FROM table" | mysql --user=username database
1
danadam

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/ を参照してください

0
Rondo