gpt4 book ai didi

mysql - 特殊字符数据迁移

转载 作者:行者123 更新时间:2023-11-29 10:00:45 25 4
gpt4 key购买 nike

我必须将数据库从 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"

错误是:

ERROR 1300 (HY000): Invalid utf8 character string: '"167 Bernerstrasse S'

最佳答案

167 Bernerstrasse S 看起来像是 167 Bernerstrasse Süd 在第一个非 utf8 字符处的截断。

您已指定传入数据为 utf8 via

 LOAD DATA ... CHARACTER SET utf8 ...

我得出结论,传入文件的编码不正确。它可能是 latin1,在这种情况下,十六进制将是 FC。假设是这种情况,您应该切换到

 LOAD DATA ... CHARACTER SET latin1 ...

目标列中的CHARACTER SET不是latin1也没关系; MySQL 将在运行中对其进行转码。

(或者,您可以将传入数据更改为 utf8(十六进制:C3BC),但这可能会更麻烦。)

引用:Trouble with UTF-8 characters; what I see is not what I stored 中的“截断”

(至于如何检查十六进制,或者SHOW CREATE TABLE,我们需要知道您正在使用什么操作系统以及您有哪些可用的工具。)

关于mysql - 特殊字符数据迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53019322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com