2009-07-13 111 views
299

我試圖通過命令行將帶有標題的PostgreSQL表導出爲CSV文件,但是我將其導出爲CSV文件,但沒有標題。我也需要這些標題。我的代碼看起來如manual描述如下將Postgres表導出爲帶標題的CSV文件

COPY products_273 to '/tmp/products_199.csv' delimiters','; 
+0

是否使用一個Postgres> = 8.1? – 2009-07-13 16:09:27

+0

PostgreSQL 7.3.4 – Roland 2009-07-14 05:45:52

+1

我想我會制定一個升級到更新版本的計劃,將使生活變得如此簡單 – Roland 2009-07-15 06:13:45

回答

441
COPY products_273 TO '/tmp/products_199.csv' DELIMITER ',' CSV HEADER; 

+5

請注意,HEADER參數直到8.1才被引入。 – 2009-07-13 16:08:08

+2

也就是說,有點生疏。 – 2009-07-13 16:13:25

30

這工作

psql dbname -F , --no-align -c "SELECT * FROM TABLE" 
155

在psql命令行:

\copy my_table to 'filename' csv header

沒有分號結尾。

77

而不僅僅是表名,您還可以編寫一個查詢來獲取僅選定的列數據。

COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER; 

與管理員權限

\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER; 
1

拷貝(anysql查詢datawanttoexport)爲 'fileablsoutepathwihname' 分隔符 '' CSV標題;

使用這個u也可以導出數據。

3

繼承人我如何得到它使用pgsl connnect到Heroku的PG數據庫工作電源外殼:

我必須先更改客戶端編碼爲utf8這樣的:\encoding UTF8

然後將數據導出到一個CSV文件這樣的:

\copy (SELECT * FROM my_table) TO C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~' 

我用〜作爲分隔符,因爲我不喜歡CSV文件,我通常使用TSV文件,但它不會讓我添加「\ t」作爲分隔符,所以我用,因爲它的一個很少使用characeter。

45

當我沒有權限從Postgres寫出文件時,我發現我可以從命令行運行查詢。

psql -U user -d db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER ',';" > foo_data.csv 
6

9.5我使用的版本,這將是這樣的:

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);