我正在使用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/F004774820141";"3d67502e-94ed-4e3d";"2014-01-01 00:15:25.283"
我找到了一个解决方案,使用SQL中的REPLACE
函数将替换为
/
,但在处理数百万行时,这是一个过于繁重的处理函数
为什么会发生这种情况?有没有办法取代?
没错,'\'是一个转义符。若要修复导入错误,您需要将其加倍。将csv文件中出现的所有"\"替换为"\"。
使用REPLACE SQL函数执行此操作将耗资巨大。如果可能的话,直接在CSV文件中双击"\",或者更改生成CSV文件的工具来处理此问题。