gpt4 book ai didi

Mysql数据迁移-wbcopytables charset

转载 作者:可可西里 更新时间:2023-11-01 09:01:08 24 4
gpt4 key购买 nike

我正在尝试将一些数据从 MSSQL 移动到 MySQL。当我运行 wbcopytables.exe 时,mysql 连接上的字符集似乎是错误的,当数据包含表情符号图标 (http://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%8C%A8%E2%98%83%EF%B8%8F) 时,我收到错误消息:

Incorrect string value: '\xF0\x9F\x8C\xA8\xE2\x98...' for column 'Value' at row 4

我的服务器、数据库、表和列有 charset=utf8mb4collat​​ion=utf8mb4_unicode_ci。但是,我可以使用我在旁边创建的 .NET 应用程序将这些表情符号插入到该表中,因此这不是模式/服务器设置的问题。这让我觉得 wbcopytables.exe 正在连接上强制执行一些其他编码(可能是 utf8)。我尝试更改所有 mysql 变量以按照 my.ini 中的其他 SO 问题中的建议强制执行 utf8mb4:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET collation_connection = utf8mb4_unicode_ci'
skip-character-set-client-handshake

编辑:这里是关于 wbcopytables.exe 本身的更多信息:https://dev.mysql.com/doc/workbench/en/wbcopytables.html

最佳答案

我有一个类似的问题,原来我的源数据库有 latin1 编码,但应用程序允许使用 UTF8 数据。不用说这引起了问题。我必须将数据从源数据库导出到 CSV,然后使用 LOAD DATA LOCAL INFILE 代替指定的字符编码。例如

load data local infile 
'C:\\SentryLink Search\\Git\\WebApp\\sql\\data_subject_address_clean.csv'
replace into table subject_address
character set latin1
fields terminated by ',' OPTIONALLY ENCLOSED BY '\''
escaped by '|'
lines terminated by '\n';

请注意,我使用管道字符 | 作为转义字符,因为它不太可能出现在数据中,也就是说,偶尔一行会有 |' 因此,作为第一步,必须使用 grep 或类似命令删除这些行,或编辑它们。

我不能说它很有趣,但它确实有效。

关于Mysql数据迁移-wbcopytables charset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026385/

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