Mysql 使用;“加载数据本地填充”;加载包含重音字符的csv文件
我使用JDBC执行查询“LoadDataLocalInfle”,将csv文件加载到mysql表中 csv文件包含重音字符,如ä、ö、ü、ß 我的问题是,通过JDBC或终端执行查询“加载数据本地填充”,无法将德语字符插入mysql表;但是,我可以通过执行“insert”或“UPDATE”语句来插入德语字符 我一直在尝试各种不同的方法来解决这个问题,如下所示,但仍然无法奏效: 对于JDBC连接,我做到了: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: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修复了这个错误。谢谢喜欢这个解释来推断编码。