我有一个bash脚本,它调用PSQL执行查询,然后使用WHILE循环将输出输出打印到一个文件中。类似于:
psql -U zrec -d zrec -t -c "SELECT .........;" \ | while read -a Record; do
printf "${Record[0]},${Record[1]}\n" >> /tmp/file.csv
done该查询已发展为一个非常大的查询。另外,我现在需要向查询传递一个日期变量。因此,我正在考虑接受这个硬编码的查询,并将其放入一个.sql文件中,调用它,传递日期变量,并将输出打印到一个文件中。
甲骨文使这很容易与线轴和&etc;1,等等。
有什么办法我可以:
文件中。
看起来应该很简单,但事实证明并非如此。
发布于 2020-06-23 20:48:01
如果您想要生成一个csv文件,不要使用假脱机或类似的东西,请使用\copy。不需要循环。
类似于:
\copy (SELECT ....) to '/tmp/file.csv' with (format csv, header true)通常,将任何长度超过几个单词的内容放入单独的SQL脚本比使用-c "..."传递它更容易,这也会引发许多嵌套的引用问题。
因此,如果您将上述内容放入一个文件(例如export.sql )中,您所需要的就是:
psql -U zrec -d zrec -f export.sql`https://stackoverflow.com/questions/62542142
复制相似问题