2015-05-26 84 views
1

性格我無法加載「\」從CSV字符文件到MySQL數據庫版本6.1無法負荷「」在MySQL數據庫

假設下面是我的Excel表格轉化爲CSV。

------------------------------ 
ColumnHeader1 | ColumnHeader2 | 
------------------------------ 
BA\   |Pune   | 
------------------------------- 

MySQL命令:

LOAD DATA LOCAL INFILE 'D:\\mydatafile.csv' 
INTO TABLE mydb.mytable FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES 
(ColumnHeader1,ColumnHeader2); 

當我運行在上表中查詢select,我得到下面這是不類似於上面表輸出。這在mysql 6.1中是完美的。現在升級到6.2創建的問題。

------------------------------ 
ColumnHeader1 | ColumnHeader2 | 
------------------------------ 
BAPune   |null  | 
------------------------------- 

回答

1

嘗試CSV文件以\\替換所有的\,並看看會發生什麼

https://dev.mysql.com/doc/refman/5.1/en/load-data.html

反斜槓是MySQL在SQL語句中的字符串中的轉義字符,因此指定文字反斜槓,您必須指定兩個反斜槓來將該值解釋爲單個反斜槓。轉義序列'\ t'和'\ n'分別指定製表符和換行符。

+0

它不是possilbe對我來說,所有的50萬個記錄在不同的細胞中重播。並且它在6.1版本中又一次完美運行。 –

+0

怎麼這樣?它只是一個文本文件perl -pi -e's/\\/\\\\/g'mydatafile.csv – sathia

+0

是用'\\'替換數據中的所有'\'並添加ESCAPED BY'\\'爲了我。 –

0

您的\不會被mysql轉義,您需要將其轉義到數據庫中。 如果你只想使用你的手或者mysql,你將有兩種選擇:用手(這是一個窮人的方式)\替換成\\;或者手動替換;

或者你可以使用LIKE pattern [ ESCAPE 'escape_character' ]in an insert statement,這樣你就可以逃脫你想要的一切。

1

嘗試在查詢中添加FIELDS TERMINATED BY ',' ESCAPED BY '\\'

LOAD DATA LOCAL INFILE 'D:\\mydatafile.csv' 
INTO TABLE mydb.mytable FIELDS TERMINATED BY ',' 
FIELDS TERMINATED BY ',' ESCAPED BY '\\' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES 
(ColumnHeader1,ColumnHeader2); 
+0

它沒有奏效。看來我必須將MySQL從6.2降級到6.1,這完全適用於相同的數據和SQL查詢。 –