Postgres输出不恒定,Unix命令

时间:2014-06-16 22:51:13

标签: sql postgresql unix psql postgresql-9.3

您好我使用unix命令执行postgres psql脚本,这会创建一个DB,理论上它可能会更复杂,在此命令之后我正在使用">>&#34 ;要将输出保存在文件中,问题是它只在数据库成功创建时保存,但是由于它已经存在而失败并不存储任何内容。

以下是完整命令

的示例
sudo -u postgres psql -f /home/user/script.sql >> /home/user/output.txt 

在脚本中我只是创建数据库db2;"

我使用Ubuntu 14.04和Postgres 9.3.4

任何提示或帮助都会很棒。或者,如果需要任何信息,我很乐意回答你。

1 个答案:

答案 0 :(得分:0)

您还需要重定向stderr,在这种情况下,从文本文件中已存在db的情况下应该输出一些错误。

  

sudo -u postgres psql -f /home/user/script.sql>>   /home/user/output.txt 2>& 1

您还可以将命令包装在bash脚本中,该脚本在运行命令之前先检查数据库是否存在。

通常,在运行您输出到文件的任何命令时,您要么将stderr重定向到stdout,要么将stderr重定向到单独的文件(取决于您想要消耗任何错误输出的方式)。请注意,某些程序(包括psqlpg_dump等)有时会将警告信息消息记录到stderr,因此仅存在stderr输出并不总是意味着本身存在问题。