2016-01-25 103 views
0

查詢是否等同於sql server的openquery或openrowset用於postgresql從excel或csv中查詢?相當於PostgresQL的SQL服務器Openquery

+0

http://www.postgresql.org/docs/9.4/static/sql-copy.html,或http://pgoledb.com/? –

+0

複製命令爲我工作謝謝 –

+0

您也可以使用外國數據包裝直接讀​​取文件,而無需導入它 –

回答

1

您可以使用PostgreSQL的COPY

按照Doc:在PostgreSQL表和標準文件系統 文件之間

COPY移動數據。 COPY將表中的內容複製到文件中,而COPY FROM將數據從文件複製到表中(無論表中已有數據,將數據附加到 )。 COPY TO還能拷貝SELECT查詢的結果

COPY是這樣工作的:

從CSV

導入表假設你已經有一個表中的地方與正確的列中,命令如下

COPY tblemployee FROM '~/empsource.csv' DELIMITERS ',' CSV; 

從表中導出CSV。

COPY (select * from tblemployee) TO '~/exp_tblemployee.csv' DELIMITERS ',' CSV; 

其重要在這裏指出,總的來說,如果你的數據是Unicode或需要嚴格的編碼,然後始終設置CLIENT_ENCODING運行任何上述前面提到的命令。

要設置CLIENT_ENCODING參數PostgreSQL中

set client_encoding to 'UTF8' 

set client_encoding to 'latin1' 

另一個要警惕的是空值,而出口,如果某些字段爲空,則PostgreSQL將添加「/N」代表一個空字段,這是很好,但如果你試圖導入SQL Server中的數據,可能會導致問題。

速戰速決是你會在導出CSV

COPY (select * from tblemployee) TO '~/exp_tblemployee.csv' DELIMITERS ',' NULL as E''; 

另一個常見的需求是進口或出口用的標題更喜歡作爲一個空佔位符指定修改導出命令。

將CSV導入到帶表頭的表格中以獲取csv文件第一行中存在的列。

COPY tblemployee FROM '~/empsource.csv' DELIMITERS ',' CSV HEADER 

將表格導出爲CSV,其中頭部出現在第一行。

COPY (select * from tblemployee) TO '~/exp_tblemployee.csv' DELIMITERS ',' CSV HEADER