シェルスクリプトで以下のように書きました。
sqlq(){
result=`sqlplus -S sss/eee@sid < $1|grep -v '^$'`
echo $result
}
echo "select * from emp" > q.sql
sqlq q.sql
出力をファイルに送信する必要があります。以下のようにq.sqlでスプールしようとしましたが、成功しませんでした。
echo "SPOOL /tmp/test.txt; select * from emp';SPOOL off" > q.sql
ベストアンサー1
あなたのコード:
sqlq(){
result=`sqlplus -S sss/eee@sid < $1|grep -v '^$'`
echo $result
}
echo "select * from emp" > q.sql
sqlq q.sql
echo
関数の合計変数はsqlq
必要ありません。
sqlq () {
sqlplus -S "sss/eee@sid" < "$1" | grep -v '^$'
}
これは関数の出力を標準出力に送ります(前と同様)。
関数を呼び出すと、その出力をファイルにリダイレクトできます。
cat >query.sql <<END_SQL
SELECT * FROM emp;
END_SQL
sqlq query.sql >result.out
私が使う理由ここのドキュメント利点は、複数行のSQLクエリを非常に簡単に生成できることです。
cat >query.sql <<END_SQL
SELECT data.*
FROM data
JOIN attributes ON (data.attr_id = attributes.attr_id)
WHERE attributes.name = "Example";
END_SQL
...例えば。