簡體   English   中英

PSQL:如何在命令行上阻止任何 output?

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

我的問題:作為 TFS 構建過程的一部分,我正在嘗試通過批處理文件在命令行中運行數據庫生成腳本,以啟用對已知數據集的夜間測試。

我們運行的腳本在命令行上輸出通知、警告和一些錯誤。 我想至少抑制通知和警告,如果可能的話,抑制錯誤,因為它們似乎對腳本的整體成功沒有影響。 就 TFS 構建過程而言,這個 output 似乎正在影響過程的成功或失敗。 它將腳本中 output 的每一行突出顯示為錯誤並且構建失敗。

由於我們的系統在 Windows 上運行,我在網上找到的大多數潛在解決方案都不起作用,因為它們似乎以 Linux 為目標。

我已將 postgresql.conf 文件中的client_min_messages更改為錯誤,但是當從 pgAdmin(工具 > 服務器配置)查看相同的配置時,它顯示的值為錯誤,但當前值為通知。

批處理文件中調用 psql 的所有行也使用-q標志,但這似乎只是阻止了 CREATE TABLE 和 ALTER TABLE 等基礎知識。

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

psql -d 數據庫 -q < C:\Database\scripts\script.sql

此命令的示例 output 行:

警告:“身份”列的類型為“未知”詳細信息:無論如何都將繼續創建關系。

使用-f標志指定文件沒有區別。

我可以在我的開發機器上手動運行批處理文件,無論命令提示符上顯示什么錯誤或消息,它都會生成預期的數據庫。

所以最終我需要我的批處理文件中的所有 psql 命令靜默運行。

使用psql -o標志將命令輸出發送到所需的文件名,如果不關心它,則將其發送到/ dev / null。

psql COMMAND &> output.txt

或者,使用示例命令:

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

-q 選項不會阻止查詢 output。

-q, --quiet 安靜地運行(沒有消息,只查詢 output

為了避免 output 你必須將查詢結果發送到一個文件

psql -U 用戶名 -d db_name -pXXXX -c "SELECT * FROM table_name LIMIT 5;" > C:\test.csv

use 1 >: 每次創建新文件
使用 2 >>: 將創建並繼續添加

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM