PSQL:如何阻止命令行上的任何输出?

时间:2016-02-18 13:08:58

标签: windows command-line tfs postgresql-9.3 psql

我的问题:我正在尝试通过批处理文件在命令行运行数据库生成脚本,作为TFS构建过程的一部分,以便对已知数据集进行夜间测试。

我们运行的脚本在命令行上输出Notices,Warnings和一些错误。我想至少压制通知和警告,如果可能的话,还要抑制错误,因为它们似乎对脚本的整体成功没有影响。就TFS构建过程而言,此输出似乎正在影响该过程的成功或失败。它突出了脚本输出的每一行作为错误并使构建失败。

由于我们的系统在Windows上运行,我在网上找到的大多数潜在解决方案都无法正常工作,因为它们似乎针对的是Linux。

我已经将 client_min_messages 更改为postgresql.conf文件中的错误,但是当从pgAdmin(工具>服务器配置)查看相同的配置时,它会将值显示为Error但是当前值作为通知。

调用psql的批处理文件中的所有行都使用 -q 标志,但这似乎只能阻止诸如CREATE TABLE和ALTER TABLE等基础知识。

批处理文件中的示例行是:

psql -d database -q< C:\数据库\脚本\ script.sql

此命令的示例输出行:

警告:“身份”列的类型为“未知” 详细信息:无论如何都要继续创建关系。

使用 -f 标志指定文件没有任何区别。

我可以在我的开发机器上手动运行批处理文件,无论命令提示符显示什么错误或消息,它都会生成预期的数据库。

所以最终我需要批处理文件中的所有psql命令以静默方式运行。

2 个答案:

答案 0 :(得分:2)

使用psql -o flag将命令输出发送到您希望的文件名或/ dev / null如果您不关心它。

答案 1 :(得分:1)

psql COMMAND &> output.txt

或者,使用您的示例命令:

psql -d database -q < C:\Database\scripts\script.sql &> output.txt