簡體   English   中英

Postgres Psql 到文件

[英]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 等使這變得容易......

有沒有辦法我可以:

  1. 調用 bash 腳本
  2. 讓腳本調用 my_query.sql,並傳遞一個日期參數
  3. 將查詢 output 放入文件

看起來應該很簡單,但事實證明並非如此。

如果要生成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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM