3

在我的应用程序中,我正在通过 sql 中的“加载数据本地 infile”文件名命令将 csv 文件读入 DB。如果反斜杠出现在其中一个字段中,则相邻字段将被合并。将文件读入数据库时​​如何忽略反斜杠。

例子,

“abcd”、“efgh\”、“ijk”

它以 col1 的形式进入表 | col2 | col3 abcd | 埃夫吉克 | 无效的

我希望这个作为 col1 | col2 | col3 abcd | efgh | 伊克

任何指针都会有所帮助。

谢谢,阿希什

4

1 回答 1

3

默认情况下,LOAD DATA 使用 \ 作为转义字符。考虑您的输入:

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

该序列\"被解释为文字的非封闭引号,而不是反斜杠后跟引号。

最好的解决方案是正确转义 CSV 文件中的反斜杠,例如:

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

如果您不能这样做,您可以通过添加ESCAPED BY ''到语句来禁用 LOAD DATA INFILE 语句中的转义。这将阻止它将 \ 识别为转义字符,但请记住,它也会禁用输入文件中的所有其他转义序列。那也将 import efgh\,反斜杠不会被忽略。

如果导入efgh\不可接受,那么您将不得不修复输入文件的格式,或者稍后在您的应用程序逻辑或使用另一个 SQL 查询中删除尾随 \。

有关文件格式选项的更多信息,请参阅MySQL LOAD DATA INFILE 语法

希望有帮助。

于 2013-08-05T17:45:50.643 回答