Sah*_*shi 19 postgresql encoding utf-8
我在我的sql脚本中读取csv文件并将其数据复制到postgre sql表中.代码行如下:
\copy participants_2013 from 'C:/Users/Acrotrend/Desktop/mip_sahil/mip/reelportdata/Participating_Individual_Extract_Report_MIPJunior_2013_160414135957.Csv' with CSV delimiter ',' quote '"' HEADER;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:编码'WIN1252'中字节序列为0x9d的字符在编码'UTF8'时没有等效字符.
任何人都可以帮我解决这个问题的原因,我该如何解决?
Phi*_*ing 39
问题是0x9D在WIN1252中不是有效的字节值.这里有一张表:https://en.wikipedia.org/wiki/Windows-1252
问题可能是您正在导入UTF-8文件而postgresql默认为Windows-1252(我认为这是许多Windows系统上的默认设置).
在使用chcp运行脚本之前,需要更改Windows命令行上的字符集.或者在postgresql中你可以:
SET CLIENT_ENCODING TO 'utf8';
Run Code Online (Sandbox Code Playgroud)
在导入文件之前.
只需在命令中指定encoding 'UTF-8'为编码\copy,例如(为了便于阅读,我将其分成两行,但将其全部放在同一行):
\copy dest_table from 'C:/src-data.csv'
(format csv, header true, delimiter ',', encoding 'UTF8');
Run Code Online (Sandbox Code Playgroud)
更多细节:
问题是客户端编码设置为WIN1252,很可能是因为它在 Windows 计算机上运行,但文件UTF-8中包含字符。
您可以使用以下命令检查客户端编码
SHOW client_encoding;
client_encoding
-----------------
WIN1252
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16789 次 |
| 最近记录: |