Mysql 使用;“加载数据本地填充”;加载包含重音字符的csv文件

Mysql 使用;“加载数据本地填充”;加载包含重音字符的csv文件,mysql,jdbc,load-data-infile,Mysql,Jdbc,Load Data Infile,我使用JDBC执行查询“LoadDataLocalInfle”,将csv文件加载到mysql表中 csv文件包含重音字符,如ä、ö、ü、ß 我的问题是,通过JDBC或终端执行查询“加载数据本地填充”,无法将德语字符插入mysql表;但是,我可以通过执行“insert”或“UPDATE”语句来插入德语字符 我一直在尝试各种不同的方法来解决这个问题,如下所示,但仍然无法奏效: 对于JDBC连接,我做到了: jdbc:mysql://${sequence.db.svr}/seq? connectTi

我使用JDBC执行查询“LoadDataLocalInfle”,将csv文件加载到mysql表中

csv文件包含重音字符,如ä、ö、ü、ß

我的问题是,通过JDBC或终端执行查询“加载数据本地填充”,无法将德语字符插入mysql表;但是,我可以通过执行“insert”或“UPDATE”语句来插入德语字符

我一直在尝试各种不同的方法来解决这个问题,如下所示,但仍然无法奏效:

对于JDBC连接,我做到了:

jdbc:mysql://${sequence.db.svr}/seq?  connectTimeout=20000&useUnicode=yes&characterEncoding=utf8
对于“加载数据本地填充”,我做了:

对于mysql数据库属性,我执行了以下操作:

ALTER DATABASE databaseName CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tableName CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
对于mysql表属性,我执行了以下操作:

ALTER DATABASE databaseName CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tableName CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
创建表查询:

CREATE TABLE `testTable` (
  `value` varchar(255) DEFAULT NULL,
  `mapped_value` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 
创建数据库查询:

CREATE DATABASE `testDatabase` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */
Csv文件:

amÜ,amman
amàn,amman
十六进制CSV文件:

616d dc2c 616d 6d61 6e0a 616d e06e 2c61 6d6d 616e 0a

在我看来,您的CSV文件是用拉丁语-1(ISO 8859-1)而不是utf-8编码的。我怎么知道呢

 a  m   Ü  ,   a  m   m  a   n  \n    a  m   à  n   ,  a   m  m   a  n   \n

61 6d  dc 2c  61 6d  6d 61  6e 0a    61 6d  e0 6e  2c 61  6d 6d  61 6e   0a
看看Ü是如何用一个字节编码的,
dc
?这是拉丁语-1。如果它在utf-8中,它将由
c39c
编码


因此,将
加载数据填充
命令中的
字符集UTF8
更改为
字符集latin1
,然后重试。

1)在开头使用此命令:
设置字符集“UTF8”;设置排序规则\u连接='utf8\u常规\u ci'
,2)检查输入文件是否以正确的编码创建(使用
enca
file-i
)@Alfabravo您是对的。我的csv文件的编码不正确。我通过将csv文件编码更改为utf8修复了这个错误。谢谢谢谢你是对的。我的csv文件的编码不正确。我通过将csv文件编码更改为utf8修复了这个错误。谢谢喜欢这个解释来推断编码。