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。
这个人不是在谈论加载表,而是在运行查询。我不确定这样的事情是否有效。这是针对学校项目的,因此我们获得了一个可供使用的数据库。我甚至不确定我是否有权更改编码。
答案 0 :(得分:0)
我明白了。
ALTER DATABASE llo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_CI;
此命令有效,但不区分大小写。这会导致错误,因为它读取ABBA = abba。看起来我需要一个区分大小写的编码,不会像latin1那样弄乱文本文件。有什么建议?我也尝试过COLLATE utf8_bin而没有运气。