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

标签 mysql sql-server unicode

我在将数据从 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/

相关文章:

sql-server - Golden Gate 不同步所有记录

sql-server - 案例陈述中的问题

c# - 如何使控制台能够打印 65535 个 UNICODE 字符中的任何一个

mysql - ON DUPLICATE KEY UPDATE - 减少 MySQL 中的值

php - 如何在数据库中存储多语言网站信息?

mysql - Entity Framework 数据库不可知开发

javascript - 我可以依靠 charCodeAt() 和 fromCharCode() 的行为保持不变吗?

java - 将 UTF-8 Unicode 字符串转换为 ASCII Unicode 转义字符串

java - Java 中的 "Too Many Connections"错误(MYSQLNonTransientConnectionException)

mysql - Grails + BIRT 报告 - 将月份和年份作为日期传递到 BIRT 报告