在我的应用程序中,我正在通过 sql 中的“加载数据本地 infile”文件名命令将 csv 文件读入 DB。如果反斜杠出现在其中一个字段中,则相邻字段将被合并。将文件读入数据库时如何忽略反斜杠。
例子,
“abcd”、“efgh\”、“ijk”
它以 col1 的形式进入表 | col2 | col3 abcd | 埃夫吉克 | 无效的
我希望这个作为 col1 | col2 | col3 abcd | efgh | 伊克
任何指针都会有所帮助。
谢谢,阿希什
默认情况下,LOAD DATA 使用 \ 作为转义字符。考虑您的输入:
"abcd", "efgh\", "ijk"
该序列\"
被解释为文字的非封闭引号,而不是反斜杠后跟引号。
最好的解决方案是正确转义 CSV 文件中的反斜杠,例如:
"abcd", "efgh\\", "ijk"
如果您不能这样做,您可以通过添加ESCAPED BY ''
到语句来禁用 LOAD DATA INFILE 语句中的转义。这将阻止它将 \ 识别为转义字符,但请记住,它也会禁用输入文件中的所有其他转义序列。那也将 import efgh\
,反斜杠不会被忽略。
如果导入efgh\
不可接受,那么您将不得不修复输入文件的格式,或者稍后在您的应用程序逻辑或使用另一个 SQL 查询中删除尾随 \。
有关文件格式选项的更多信息,请参阅MySQL LOAD DATA INFILE 语法。
希望有帮助。