![](/img/trans.png)
[英]How can I parse the top line of output of a previous command as input to another command?
[英]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.