【问题标题】:Back slash in the csv filecsv 文件中的反斜杠
【发布时间】:2013-08-06 12:18:37
【问题描述】:

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

例子,

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

它作为 col1 | col2 | col3 abcd |埃夫吉克 |空

我希望这个去哪里 col1 | col2 | col3 abcd | efgh |伊克

任何指针都会有所帮助。

谢谢, 灰烬

【问题讨论】:

  • 请发布您的输入文件示例,您希望导入的内容以及实际导入的内容。
  • 我已根据您的编辑更新了下面的答案。

标签: java mysql database csv


【解决方案1】:

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

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

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

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

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

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

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

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

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 2017-03-16
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 2021-10-11
    • 2014-02-04
    相关资源
    最近更新 更多