2

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

阿吉拉尔,埃尔南

阿吉拉尔,埃尔南

a 上面有一个破折号。这是错误消息:

错误 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 )在连接期间确保正确编码。

该人不是在谈论加载表,而是在运行查询。我不确定这样的事情是否可行。这是一个学校项目,所以我们得到了一个可以使用的数据库。我什至不确定我是否有权更改编码。

4

1 回答 1

0

我想到了。

ALTER DATABASE llo 默认字符集 utf8 整理 utf8_general_CI;

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

于 2013-04-08T22:32:30.143 回答