Shell-Script

Shell 腳本:將 sql 查詢輸出重定向到文件

  • November 18, 2018

在 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

… 例如。

引用自:https://unix.stackexchange.com/questions/299978