2010-06-14 43 views
0

何時執行查詢COPY TO ... CSV,我創建CSV文件。當在excel中打開它應該與國家字符的名稱列時,BUt不是它應該的。所以我的問題是,如果在一個SQL查詢中可以將此編碼更改爲utf8?或者是其他東西?因爲我希望將新創建的CSV文件作爲網絡用戶的最終產品。我希望有人明白我想要的東西:)將SQL編碼爲CSV

回答

1

Postgresql似乎不支持在複製爲csv時轉碼列名稱。我認爲這是你要求的?但是,可以根據需要構造「複製」命令以重命名列。

因此,舉例來說,如果我創建一個表,以便:

[email protected]@[local] =# copy csvtest to stdout with csv header; 
id,value 
1,Telewizja Polska zawiesiła dzisiejszą emisję programu 

你可以把它的數據轉碼到別的東西:

[email protected]@[local] =# set client_encoding = 'iso8859-2'; 
SET 
[email protected]@[local] =# copy csvtest to stdout with csv header; 
id,value 
1,Telewizja Polska zawiesi�a dzisiejsz� emisj� programu 

但是,如果你在一個國家的字符定義的列名:

[email protected]@[local] =# reset client_encoding ; 
RESET 
[email protected]@[local] =# copy (select id as id, value as "emisję" from csvtest) to stdout with csv header; 
id,emisję 
1,Telewizja Polska zawiesiła dzisiejszą emisję programu 

那麼這些未轉碼:

[email protected]@[local] =# set client_encoding = 'iso8859-2'; 
SET 
[email protected]@[local] =# copy (select id as id, value as "emisję" from csvtest) to stdout with csv header; 
id,emisję 
1,Telewizja Polska zawiesi�a dzisiejsz� emisj� programu 

大概是我作爲COPY命令的一部分發送的UTF-8正在被回顯給我,而沒有被解碼。

+0

那麼,如果我理解得好,這個問題沒有解決方案?! – Z77 2010-06-15 08:07:45