我必须将一个数据库从oracle迁移到拥有数十亿数据的mysql。我找到了一个策略来创建一个模式,从oracle获取csv格式的数据,并将数据加载到mysql。我创建了一个csv文件,其中分隔符为引号(“),字段以逗号(,)结尾。现在的问题是,csv文件包含的特殊字符是不会被导入mysql的。
我正在使用命令:
LOAD DATA LOCAL infile 'C:/Users/NNCP4659/export.csv' INTO TABLE dbk_address_master
CHARACTER SET utf8 fields terminated BY "," enclosed by '"' lines terminated
BY "\r\n"(id, country_code,address,city_id,latitude,longitude,
@is_active,google_address,old_address,building_number,street_name,created_by)
set is_active=cast(@is_active as signed);
我的数据如下:
4113973,"CHE","167 Bernerstrasse Süd","57066","47.3943271","8.4865849",1,"Bernerstrasse Süd 167, 8048 Zürich,
Switzerland","167 Bernerstrasse Süd","Y","167","Bernerstrasse Süd","migration"
错误是:
错误1300(hy000):无效的utf8字符串:'“167 bernerstrasse'
1条答案
按热度按时间huus2vyu1#
167 Bernerstrasse S
看起来像是167 Bernerstrasse Süd
在第一个非utf8字符处。您已经指定传入的数据是utf8 via
我的结论是传入的文件没有正确编码。它可能是拉丁文1,在这种情况下,十六进制是
FC
. 假设是这种情况,您应该切换到如果
CHARACTER SET
在目标列中不是1;mysql将在飞行中对其进行转码。(或者,您可以将传入的数据更改为utf8(十六进制:
C3BC
),但这可能会更麻烦。)参考:utf-8字符出现故障时“截断”;我看到的不是我储存的
(至于如何检查六角形,还是怎么做
SHOW CREATE TABLE
,我们需要知道您正在使用什么操作系统以及您有哪些可用的工具。)