2016-10-13 62 views
0

我正在將數據加載到MySQL看似基本的問題。我使用的是:MySQL數據加載數據在最後一個字段中包含字符和字段終止符

LOAD DATA LOCAL INFILE 'C:/.../Contrato.txt' 
INTO TABLE schema.contrato 
FIELDS TERMINATED BY ';' ENCLOSED BY '|' LINES TERMINATED BY '/r/n' IGNORE 0 LINES; 

在文件中的每一行看起來是這樣的,由另一程序產生:

|abc|;|cde|;|123|;|456|;|name|\r\n 

當執行負載,似乎一切正常加載,除了最後一個領域。當我看着桌子時,最後一個字段實際上顯示了'|'名字周圍的字符。這不是世界末日,但奇怪的是它會這樣做。截至目前,我正在通過添加';'來修復它。在\ r \ n字符之前。

這是應該這樣做嗎?爲什麼我需要在行結束符之前添加字段終結符以刪除字段enclosers?

回答

0

我可以在一個文件中複製一個文件的效果,其中只有一行,我只有一個條目,它的最後一列條目是「name | | abc」。

我改變「/ R/N」到「\ r \ n」 &載荷工作正常的文件一次入境&多個條目&周邊|被正確刪除

LOAD DATA LOCAL INFILE 'C:/.../Contrato.txt' 
INTO TABLE schema.contrato 
FIELDS TERMINATED BY ';' ENCLOSED BY '|' LINES TERMINATED BY '\r\n' IGNORE 0 LINES; 

正確的MySQL的轉義字符是反斜線不forwardslash這是不作爲特殊字符處理 - 讓你的原代碼尋找4字符序列「forwardslash [R forwardslash n」來終止該行

+0

但您設法複製這個問題。這是與文件結尾有關的錯誤嗎?爲了安全起見,我留下了額外的分號並按照您的建議更改了斜線。謝謝回覆! – olvc89

+0

這不是一個與文件結束相關的錯誤 - 請參閱我編輯的答案。這就是爲什麼你的文本文件的路徑名起作用的原因 - 如果你對Windows使用通常的反斜槓路徑分隔符,那麼你需要將它們加倍 - 幸運的是大多數(不是全部)s/w默默地設置正確的分隔符,所以你可以使用forwardslash作爲MySQL的路徑分隔符。 – PaulF

+0

我明白了。但它怎麼仍然分開線路?它是否在指定字符串的頂部使用默認值? – olvc89

相關問題