繁体   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