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

PSQL: How can I prevent any output on the command line?

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

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

由于我们的系统 运行 在 Windows 上运行,我在网上找到的大多数潜在解决方案都不起作用,因为它们似乎以 Linux.[=10 为目标=]

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

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

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

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

此命令的示例输出行:

警告:列 "identity" 的类型为 "unknown" 详细信息:无论如何都要继续创建关系。

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

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

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

psql COMMAND &> output.txt

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

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

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