2013-08-05 59 views
1

在我的應用程序中,我正在通過sql中的「load data local infile」filename命令將一個csv文件讀入數據庫。如果反斜槓出現在其中一個字段中,則相鄰字段會合並。將文件讀入數據庫時​​如何忽略反斜槓。csv文件中的反斜槓

實施例,

「ABCD」, 「EFGH \」, 「IJK」

它進入表作爲 COL1 | col2 | col3 abcd | efghijk | null

我想把它作爲 col1 | col2 | col3 abcd | efgh | ijk

任何指針都會有幫助。

感謝, 阿希什

+0

請發佈您的輸入文件的樣本,您希​​望導入的內容以及實際導入的內容。 –

+0

我已根據您的修改更新了以下答案。 –

回答

1

默認情況下,LOAD DATA使用\作爲轉義字符。考慮你的輸入:

"abcd", "efgh\", "ijk" 

該序列\"被解釋爲文字非封閉的報價,而不是一個反斜槓後跟一個引號。

最好的解決方案是正確的逃生反斜槓在您的CSV文件,如:

"abcd", "efgh\\", "ijk" 

如果你不能做到這一點,您可以通過添加ESCAPED BY ''來聲明禁止在LOAD DATA INFILE語句逃逸。這將阻止它識別\作爲轉義字符,但請記住它也會禁用輸入文件中的所有其他轉義序列。那也會導入efgh\,反斜槓不會被忽略。

如果導入efgh\是不可接受的,那麼您將不得不修復輸入文件的格式,或者在您的應用程序邏輯或其他SQL查詢中刪除後面的\。有關文件格式選項的更多信息,請參閱MySQL LOAD DATA INFILE Syntax

希望有所幫助。