我想從shell執行查詢(不在交互式psql客戶端中),並讓它將輸出的CSV或TSV表示形式打印到STDOUT。你如何用psql
或PostgreSQL命令行工具之一來做到這一點?如何從命令行打印CSV或TSV格式的PostgreSQL查詢結果?
44
A
回答
72
如果您在使用PostgreSQL 8.2或更新版本,用這個CSV:
psql -c "COPY (<select query>) TO STDOUT WITH CSV"
這TSV的,在適當的空值:
psql -c "COPY (<select query>) TO STDOUT WITH NULL AS ''"
CSV格式將正確引用包含雙引號字符的任何字段。有關COPY的更多詳細信息和選項,請參閱特定版本的PostgreSQL文檔。
5
3
您可以指定使用-F命令行參數字段分隔符給psql
3
也有可能是copy命令,它允許你指定報頭,分隔符和引用選項
psql my_database -U my_user -c "copy (select a.id,b.id from my_table_a as a inner join my_table_b as b on b.id = a.id) to STDOUT"
30
來自波希米亞的回答開始,我發現這些標誌有用:
psql my_database -U myuser -A -F , -X -t -f /path/to/query.sql -o /path/to/output.csv
- 未對齊輸出模式:-A
- 使用逗號作爲字段分隔符:-F,
- 不要讀psqlrc:-X
- 元組(不使用頁眉/頁腳):-t
- 文件包含SQL查詢:-f
- 輸出文件:-o
+2
如果您輸出的文本字段中包含逗號,它將會*不*如您所期望的那樣工作。 –
3
要指定TSV使用分隔符 '\ T'
psql my_database -U myuser -F'\t' --no-align -f mysqlfile.sql -o outputfile.tsv
要指定CSV使用分隔符 ''
psql my_database -U myuser -F',' --no-align -f mysqlfile.sql -o outputfile.csv
相關問題
- 1. PostgreSQL從空行查詢打印結果
- 2. 打印命令行執行結果
- 3. 如何格式化和打印sql查詢的結果
- 4. 如何打印所需格式的查詢結果
- 5. 如何打印命令的結果以及結果的數量?
- 6. 如何使用php-postgresql以表格格式查詢結果?
- 7. Codeigniter打印查詢結果
- 8. 打印PDO查詢結果
- 9. 爲什麼命令行不打印egrep的結果?如何讓它打印?
- 10. 打印SQL查詢結果在單行
- 11. 如何從命令行打印文件?
- 12. 使用SQL查詢打印結果的序列化格式
- 13. 從命令行打印xhtml?
- 14. 如何獲取CSV格式的SQL查詢結果?
- 15. 如何將sql查詢的結果轉換爲csv格式
- 16. 打印查看BigQuery的查詢結果
- 17. 並排打印命令結果?
- 18. 如何從postgresql打印表結構?
- 19. 如何以CSV格式發送查詢結果?
- 20. 如何使用SQL命令後臺打印csv格式的文件?
- 21. 如何使用Java在控制檯中打印任何PostgreSQL查詢結果?
- 22. 從命令行輕鬆運行BigQuery查詢並下載結果?
- 23. 格式的查詢結果
- 24. 從tsv文件中打印行[0123]
- 25. 如何運行PostgreSQL的命令行參數化查詢
- 26. SQL查詢的打印結果
- 27. 發送電子郵件不會打印查詢結果在csv
- 28. 在PHP中將MySQL查詢結果打印到CSV文件
- 29. 如何將格式爲CSV的查詢結果從標準輸出中導出?
- 30. 在Linux中打印查找命令的結果md5sum
我愛Postgres! – dan
它確實使這件事容易,不是嗎?設想一些「大數據庫供應商」的答案......首先安裝這個64 Meg軟件包,然後運行這個導出工具,它具有可能想象的最神祕的語法。使用時請注意不要刪除整個數據庫。:) –