mySQL错误编码

时间:2013-04-08 20:02:40

标签: mysql encoding loading

o我发了一篇关于另一晚从文本文件中删除重复项的帖子。我得到了一些很好的帮助,我发现我的java解析器正确地删除了重复项。我尝试将文件加载到mysql数据库中,它仍然说有重复项。 (连同错误消息,它会打印出第一个出现两次的文本字段。)所以我在输出文件中查看了这个文本,看看是否确实存在重复。然而,没有相同的名称出现两次,但唯一不同的是:

Aguilar,Hernan

Aguilar,Hernán

a高于它。这是错误消息:

ERROR 1062(23000):重复输入'Aguilar,Hernán'作为关键'PRIMARY'

我认为即使名称不同,当我使用在linux上运行的mysql加载表时,它会将其读作重复项。这看起来像编码问题。我在Windows上运行的java解析器,因为我们在linux上运行程序时遇到了类似的问题,并且打印的所有文本都不正确。 (它弄乱了人物。)在Windows上运行正常,名字打印正确。我正在解析的这个文件有外国电影,所以里面有很多奇怪的字符。我不知道如何解决这样的问题。文本文件100%正确,我只需要知道如何将其加载到mysql表中,而不会在编译过程中搞乱编码。我使用它的当前命令:

LOAD DATA INFILE 'filename' INTO TABLE tableName FIELDS TERMINATED BY '\t';

我已经使用这个命令创建了许多其他表,但是那些首先不包含重复项或名称。我已经阅读了一些帖子,建议如何解决这个问题,但我对mysql很新。我不知道何时何地输入他们提到的内容或如何检查当前的编码方案。

这是我读过的帖子:

  

它不起作用,因为你在获取数据时遇到了这个问题   正在设置显示编码 - 已经太晚了。只需确保   通过使用适当的方法在连接期间正确编码   像mysqli_set_charset()或者在你之后查询SET NAMES UTF8   连接到DB。

这个人不是在谈论加载表,而是在运行查询。我不确定这样的事情是否有效。这是针对学校项目的,因此我们获得了一个可供使用的数据库。我甚至不确定我是否有权更改编码。

1 个答案:

答案 0 :(得分:0)

我明白了。

ALTER DATABASE llo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_CI;

此命令有效,但不区分大小写。这会导致错误,因为它读取ABBA = abba。看起来我需要一个区分大小写的编码,不会像latin1那样弄乱文本文件。有什么建议?我也尝试过COLLATE utf8_bin而没有运气。