我的问题:我正在尝试通过批处理文件在命令行运行数据库生成脚本,作为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命令以静默方式运行。
答案 0 :(得分:2)
使用psql -o flag将命令输出发送到您希望的文件名或/ dev / null如果您不关心它。
答案 1 :(得分:1)
psql COMMAND &> output.txt
或者,使用您的示例命令:
psql -d database -q < C:\Database\scripts\script.sql &> output.txt