[英]Postgres Psql to file
我有一個 bash 腳本,調用 PSQL,執行查詢,然后使用 WHILE 循環,我將 output 打印到文件中。 就像是:
psql -U zrec -d zrec -t -c "SELECT .........;" \ | while read -a Record; do
printf "${Record[0]},${Record[1]}\n" >> /tmp/file.csv
done
該查詢已發展為一個非常大的查詢。 另外,我現在需要將日期變量傳遞給查詢。 因此,我正在考慮采用這個硬編碼查詢,並將其放入 .sql 文件中,調用它,傳遞日期變量,然后將 output 打印到文件中。
Oracle 使用 SPOOL 和 &1 等使這變得容易......
有沒有辦法我可以:
看起來應該很簡單,但事實證明並非如此。
如果要生成csv
文件,請不要使用 spool 或類似的東西,請使用\copy
。 無需循環。
就像是:
\copy (SELECT ....) to '/tmp/file.csv' with (format csv, header true)
將比幾個單詞更長的任何內容放入單獨的 SQL 腳本中通常更容易,而不是使用-c "..."
傳遞它,這也會引發許多嵌套引用問題。
因此,如果您將上述內容放入文件中,例如export.sql
,您只需要:
psql -U zrec -d zrec -f export.sql`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.