postgresql - 如何将带有日语文本的 CSV 导入到 PostgreSQL 表中?

标签 postgresql character-encoding

我是 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

有人能帮忙吗?

最佳答案

您需要确定 CSV 文件的编码,因为它不是 utf-8

参见 How to auto detect text file encoding?如果您需要帮助。

如评论中所述,EUC-JPShift-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';

关于postgresql - 如何将带有日语文本的 CSV 导入到 PostgreSQL 表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18648758/

相关文章:

python - Postgres `INSERT INTO` 替换条目而不是添加新条目

database - 有关 PostgreSQL 服务重新加载的文档不会中断打开的事务?

c# - C#获取postgres表数据(CSV格式)

java - 有没有支持韩语的Java SQL解析器?

php - 保存一行时缺少字符?

python - OSError :/usr/lib/libgdal. so.20: undefined symbol :sqlite3_column_table_name

postgresql - Postgres 包含抛出 "name": "SequelizeEagerLoadingError"

php - 相同的二进制文件产生不同的 md5

c# - 无法检测到正确的字符编码

javascript - 如何在 Javascript 中打印罗马语言(例如西类牙语)/特殊字符?