2016-12-07 35 views
-1

我嘗試通過PhpmyAdmin將txt文件中的數據導入到我的數據庫中。 在我使用的查詢下面。導入工作,但查詢在每個字符後添加替換標記,例如「Input1」字符串上傳爲「 I n p u t 1」(在任何發帖中都找不到此行爲)。從txt導入MySQL - 字符集

問題是我不知道txt文件的字符集。試過UTF8mb4/16/32,UCS2,ascii,big5 - 沒有成功。 如果我手動將txt保存爲UTF-8或CSV格式,上傳工作正常。我打算將它與一個Cronjob鏈接進行自動過程,因此手動調整不是解決方案。

這是我的代碼:

DELETE FROM TEST_2 WHERE 1; LOAD DATA INFILE'/share/.../Import SQL/A01.txt' REPLACE INTO TABLE TEST_2 CHARACTER SET UTF8 FIELDS TERMINATED BY';' IGNORE 1 LINES

感謝您閱讀本文 - 任何人有任何想法嗎?

+1

聞起來像一些微軟格式和/或UCS2。既然你嘗試了ucs2,請提供你如何做的細節。 _client_的字符集是重要的字符集,而不是表/列的字符集。特別是,用'ucs2'而不是utf8來嘗試'LOAD'。 –

+0

我試過UCS2進口下面的代碼: LOAD DATA INFILE '/share/.../Import SQL/A01.txt' REPLACE INTO TABLE TEST_2 CHARACTER SET UCS2 FIELDS TERMINATED BY ';' IGNORE 1 LINES 除了使用UTF8語句之外,它不會導入任何內容(空表),並且不會顯示錯誤消息。 – ElRoodie

回答

0

由於源似乎是在字符集UCS2:

LOAD DATA INFILE '/share/.../Import SQL/A01.txt' -- ok as is 
    REPLACE INTO TABLE TEST_2 
    CHARACTER SET ucs2       -- note 
    FIELDS TERMINATED BY CONVERT(';' USING ucs2) -- note 
    IGNORE 1 LINES; 

轉換的;是在假設它也就是UCS2編碼。

0

感謝您的支持,不幸的是以上都沒有爲我工作。

我現在用不同的方式解決了這個問題,在運行上傳查詢之前,自動將txt文件轉換爲utf8。不幸的是,另一個步驟是我想出的唯一解決方案,因爲SQL中的'CHARACTER SET'沒有提供可行的解決方案。

Cronjob正在通過mySQLi從轉換後的文件上傳數據。