gpt4 book ai didi

mysql - 使用 pentaho unicode 问题从 SQL Server 迁移到 MySQL

转载 作者:行者123 更新时间:2023-11-30 22:35:05 25 4
gpt4 key购买 nike

我在将数据从 SQL Server 迁移到 MySQL 时遇到问题。我在 SQL server 中有 nvarchar 列,并将它们导出到 Unicode 文本文件。但是,当我将该列导入 MySQL 的 utf-8 表时,出现重复值错误:Mysql 认为“Kaneko, Shûsuke”和“Kaneko, Shûsuke”之间没有区别。我试图将这些值放入一个唯一的列中。

怎么了?我必须在 MySQL 中使用另一个字符集吗?

我也试过在导入到MySQL之前将文本文件转换为utf8,但仍然遇到同样的错误。

最佳答案

这似乎是您的 Mysql 表创建中的问题。首先在 mysql 提示符下使用 SHOW CREATE TABLE 并查看其表结构。您是否使用了正确的字符集和整理。您可以在这里阅读 mysql docs

很多时候collat​​ion确实不仅不区分大小写,而且部分不区分重音,所以ñ=n。 (正如 Joni Salonen 指出的那样,这是不正确的!)但是 á = a.

因此我们可以使用二进制排序规则,但它有自己的缺点。如果字符不同(只是大小写或变音符号的不同),二进制排序规则会像 C 中的 strcmp() 那样比较您的字符串。它的缺点是排序顺序不自然。

一个不自然排序顺序的例子(如在“二进制”中):A,B,a,b 在这种情况下自然排序顺序是例如:A,a,B,b(sme 的小和大写变体字母并排排列)

二进制排序的实际优势在于它的速度,因为字符串比较非常简单/快速。在一般情况下,二进制索引可能不会产生预期的排序结果,但对于精确匹配它们可能很有用。对特定列使用二进制排序规则(可能是您最好的选择)

对于前-

drop table cc;
CREATE TABLE cc ( c CHAR(100) primary key ) DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
insert into cc values ( 'Kaneko, Shûsuke' );
insert into cc values ( 'Kaneko, Shusuke' );

关于mysql - 使用 pentaho unicode 问题从 SQL Server 迁移到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32793978/

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