我是SQL的初学者。我想将带有日文文本的CSV文件导入PostgreSQL表。我创建了一个表并尝试导入CSV但是此错误退出:
ERROR: invalid byte sequence for encoding "UTF8": 0x8c
CONTEXT: COPY tTokyoDir, line 1
********** Error **********
ERROR: invalid byte sequence for encoding "UTF8": 0x8c
SQL state: 22021
Context: COPY tTokyoDir, line 1
有人可以帮忙吗?
答案 0 :(得分:1)
您需要识别CSV文件的编码,因为它不是utf-8
。
如果您需要帮助,请参阅How to auto detect text file encoding?。
正如评论中所说,EUC-JP
和Shift-JIS
对日语来说是合理的编码,两者都得到了postgres的支持。
然后指示服务器在导入期间期望编码。
例如:
SET client_encoding TO 'EUC-JP';
COPY table_name FROM 'file.csv' CSV;
SET client_encoding TO default;
此方法即时转换数据,这是最简单的方法,适用于任何PostgreSQL版本。
如果您使用9.1或更新版本,COPY
有一个ENCODING
参数,使其成为单行:
COPY table_name FROM 'file.csv' CSV ENCODING 'EUC-JP';