[英]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.