您好我使用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
任何提示或帮助都会很棒。或者,如果需要任何信息,我很乐意回答你。
答案 0 :(得分:0)
您还需要重定向stderr
,在这种情况下,从文本文件中已存在db的情况下应该输出一些错误。
sudo -u postgres psql -f /home/user/script.sql>> /home/user/output.txt 2>& 1
您还可以将命令包装在bash
脚本中,该脚本在运行命令之前先检查数据库是否存在。
通常,在运行您输出到文件的任何命令时,您要么将stderr
重定向到stdout
,要么将stderr
重定向到单独的文件(取决于您想要消耗任何错误输出的方式)。请注意,某些程序(包括psql
,pg_dump
等)有时会将警告和信息消息记录到stderr,因此仅存在stderr
输出并不总是意味着本身存在问题。