5
嘗試將查詢的輸出轉儲到自動作業中的CSV文件中,並遇到列中包含逗號分隔符的字段的問題。隨着這個特定網絡的性質,我不得不跳過一些環節來完成任務,並且很有可能我錯過了一些非常明顯的東西。在帶有雙引號的postgres中輸出爲CSV
簡而言之,我從使用PLINK在另一個盒子上通過SSH連接運行遠程psql命令的客戶機啓動我的腳本。那psql命令在第三臺機器上打了一個Postgres服務器(我不能直接從客戶機連接到數據庫,因此它們之間有額外的步驟)。
如果我手動SSH從客戶端到服務器1,連接到Postgres框,並使用\ copy ...與CSV標頭,創建的文件是完美的,並且任何包含逗號的字段將自動被雙引號。但是,如果我嘗試在單個命令中發出\ copy(或copy)命令,則輸出不包含那些雙引號,所以我最終在這種情況下將字段中的逗號解釋爲分隔符後面一個。
換句話說,這有必要的雙引號:
- SSH從客戶到Server1。
- psql -Uuser -h server2數據庫
- \ copy(select ...)to'〜/ myfile.csv'with CSV header;
但並不:
- SSH從客戶到Server1
psql -Uuser -h server2 database -c "\copy (select ...) to '~/myfile.csv' with CSV header;"
你嘗試:'-c「\複印件(選擇...)到 '〜/ myfile.csv' WITH(CSV格式,頁眉TRUE,FORCE_QUOTE *);'? – Houari
我沒有,看起來這正是我所需要的。謝謝! –