PSQL:如何防止命令行上出现任何输出?

Pak*_*man 3 windows tfs command-line psql postgresql-9.3

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

我们运行的脚本在命令行上输出通知、警告和一些错误。我想至少抑制通知和警告,如果可能的话,抑制错误,因为它们似乎不会对脚本的整体成功产生影响。就 TFS 构建过程而言,此输出似乎会影响该过程的成功或失败。它将脚本的每一行输出突出显示为错误并使构建失败。

由于我们的系统在 Windows 上运行,我在网上找到的大多数潜在解决方案都不起作用,因为它们似乎针对 Linux。

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

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

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

psql -d 数据库 -q < C:\Database\scripts\script.sql

此命令的输出行示例:

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

使用-f标志指定文件没有什么区别。

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

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

小智 5

psql COMMAND &> output.txt
Run Code Online (Sandbox Code Playgroud)

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

psql -d database -q < C:\Database\scripts\script.sql &> output.txt
Run Code Online (Sandbox Code Playgroud)


Mui*_*inn 5

使用 psql -o 标志将命令输出发送到您想要的文件名或 /dev/null (如果您不关心它)。