2013-08-05 28 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

希望有所帮助。