Shell-Script
Shell 腳本:將 sql 查詢輸出重定向到文件
在 shell 腳本中,我寫在下面
sqlq(){ result=`sqlplus -S sss/eee@sid < $1|grep -v '^$'` echo $result } echo "select * from emp" > q.sql sqlq q.sql
我需要將輸出定向到文件。我已經在 q.sql 中嘗試了 spool,如下所示,但沒有成功
echo "SPOOL /tmp/test.txt; select * from emp';SPOOL off" > q.sql
你的程式碼:
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
我在這裡使用here-document的原因是它可以很容易地創建多行 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
… 例如。