0

COPY INTO用来将一些数据批量插入到 MonetDB 中。我从中复制的 csv 有一些特殊字符,例如\在某些字符串字段中,它破坏了插入。我得到的错误是:

无法导入“此处的数据”中预期的表第 1 行字段 11“clob”

当我用它替换\/工作正常时,我认为与Java有关的问题是因为\它被用作转义字符,但我不确定!

这是我用于批量加载的命令:

COPY INTO line : copy into dbtest.dbo.table3 from '/home/etltest/out.csv' using delimiters ';','\n','"';

这是一个示例行:

"452475";"0047748";"002";"2014-01-01 00:16:00.000";"2";"2014-01-01 00:16:16.090";"1";"1";"0";"testfile.xml";"~/uploads/Su/F0047748\2014\1";"3d67502‌​e-94ed-4e3d";"2014-01-01 00:15:25.283" 

我找到了一个解决方法,它使用REPLACESQL 中的函数来替换\/但是在处理数百万行时,这个处理函数太重了

为什么会发生这种情况,有什么办法可以代替\?

4

1 回答 1

0

你是对的,'\' 是一个转义字符。要修复导入错误,您需要将其加倍。将 csv 文件中出现的所有 '\' 替换为 '\'。

使用 REPLACE SQL 函数执行此操作的成本很高。如果可能,请直接将 CSV 文件中的“\”加倍,或更改生成 CSV 文件的工具以解决此问题。

于 2016-02-02T16:17:39.983 回答