sqlplusユーティリティを起動し、クエリを実行して出力を収集するシェルスクリプト

sqlplusユーティリティを起動し、クエリを実行して出力を収集するシェルスクリプト

私はこれをしようとしています:

example.shから:

#!/bin/bash
sqlplus / as sysdba
select * from dual;

このシェルスクリプトを実行するとsqlplusユーティリティが開きますが、私が作成してから行を実行することはできません。 sqlplusを手動で終了すると、シェルだけが残りの行を実行し、「Select * from Dual」が有効なコマンドではないというエラーが発生します。

スクリプトにSQLテキストを実行させる方法以内にsqlplusのコンテキスト?

答え1

SQLスクリプトを実行するには、sqlplus次のことが必要です。

#!/bin/bash
sqlplus / as sysdba <<EOF
select * from dual;
exit
EOF

あるいは、次のようにsqlコマンドをスクリプトに入れることもできます。

# cat a.sql
select * from dual;
exit

次のようにコマンドを実行します。

#!/bin/bash
sqlplus / as sysdba @a.sql

関連情報