2013-04-08 96 views
2

o我做了一個文章,在另一個晚上從文本文件中刪除重複。我得到了一些很好的幫助,我只是想出了我的Java解析器正確地刪除重複。我試圖加載文件到MySQL數據庫,它仍然說有重複。 (隨着錯誤消息,它會打印出第一個出現兩次的文本字段。)所以,我在輸出文件中查看了這個文本,看看是否確實存在重複。有沒有然而相同的名字出現了兩次,但唯一不同的是:mySQL不正確的編碼

阿吉拉爾,埃爾南

阿吉拉爾,埃爾南

的一個具有它上面的衝刺。這是錯誤消息:

ERROR 1062(23000):重複的項目「阿吉拉爾,Hernán」關鍵「主要」

我認爲即使名稱不同,當我用mysql在Linux上運行加載表格,它會將其讀取爲重複項目。這看起來像編碼問題。我在Windows上運行的java解析器,因爲我們在運行linux上的程序時遇到類似的問題,並且它打印的所有文本都不正確。 (這是搞亂人物。)在窗戶上運行良好,名稱打印正確。我解析的這個文件有外國電影,所以裏面有很多奇怪的字符。我不知道如何解決這個問題。該文本文件是100%正確的,我只需要知道如何將它加載到一個mysql表中,而不會在編碼過程中弄亂編碼。目前的命令我使用它:

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

我創建使用此命令許多其他表,但那些didnt包含重複或類似的名字擺在首位以上。我讀過幾篇文章,提示如何解決這個問題,但我對mysql很陌生。我不知道何時何地輸入他們提到的內容或如何檢查當前的編碼方案。

這是後我讀到:

它不工作,因爲你得到這個數據中提取破,你 正在設置顯示的編碼 - 這已經太晚了。只需在連接期間通過使用適當的方法 (如mysqli_set_charset())或在您的 連接到數據庫之後執行查詢SET NAMES UTF8,即可確保 連接正確。

該人不是在討論加載表格,而是在運行查詢。林不知道這樣的事情會起作用。這是一個學校項目,所以我們有一個數據庫可以使用。我甚至不確定我是否有權更改編碼。

回答

0

我想通了。

ALTER DATABASE llo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_CI;

該命令有效,但不區分大小寫。這是由於它讀取ABBA = abba而導致的錯誤。看起來我需要一個區分大小寫的編碼,並且不會像latin1那樣搞亂文本文件。任何建議?我也試過COLLATE utf8_bin沒有運氣。

+0

'utf8_bin'是區分大小寫的,如果它不起作用,你不能正確聲明它。 – Esailija 2013-04-10 11:29:08