2009-09-23 11 views
13

私は自動化しようとしているSQLスクリプトをいくつか持っています。過去に私はSQL * Plusを使用し、bashスクリプトから手動でsqlplusバイナリを呼び出しました。bashスクリプトからSQLをどのように実行しますか?

しかし、DBに接続してbashスクリプトの中からスクリプトを呼び出す方法があるかどうかを調べるために、dateを挿入してクエリを過去の特定の日数。

答えて

19

少し混乱します。 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を介して、それを行うことができますスクリプトに引数を渡す:ファイルと-SQL-1.SQL

select * from users where username='&1'; 

次いで、CHの

内容ANGEは、bashスクリプトはbashのよう

#!/bin/bash 

MY_USER=bob 
sqlplus <user>/<password> @file-with-sql-1.sql $MY_USER 
-4

は、SQLデータベース接続が組み込まれていない値を渡しSQLPLUS呼び出すために...あなたは、サードパーティのツールのいくつかの並べ替えを使用する必要があります。ここで

+6

SQLPLUSは、「サードパーティのツール」 – michael

-3

は、MySQLのクエリを実行する簡単な方法は、たぶん、あなたはSQLPLUSにパイプSQLクエリをすることができます

mysql -u [database_username] -p [database_password] -D [database_name] -e "SELECT * FROM [table_name]" 
+3

OPは、Oracleを使用していること_is_。 –

+0

これはオラクルではありません。 –

0

bashシェルです。これは、MySQLのために働く:

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

はまた同じことを行うために、「ここに文書を」使用することができます。

VARIABLE=SOMEVALUE 

sqlplus connectioninfo << HERE 
start file1.sql 
start file2.sql $VARIABLE 
quit 
HERE 
関連する問題