2016-01-12 16 views
0

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

Failed to import table line 1 field 11 'clob' expected in 'data here'

,当我与/取代\它工作正常,我想是因为\使用作为转义字符与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" 

我发现在其周围使用REPLACE功能在SQL取代\一个工作与/但这是太重的处理功能,当处理数百万行

为什么这会发生ng有什么办法,而不是取代\

+0

请问您能否提供一些关于您使用的数据和COPY INTO行的最简单示例?应该可以解决这个问题。 –

+0

我正在使用此COPY INTO行:使用分隔符'''''',''''';' –

+0

和样本行:::从'/home/etltest/out.csv'复制到dhpo.dbo.submissiontransactions3中::“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“;”3d67502e-94ed-4e3d“;”2014-01-01 00:15:25.283“ –

回答

0

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

使用REPLACE SQL函数执行此操作将代价高昂。如果可能,请直接在CSV文件中加倍\',或更改生成CSV文件的工具来处理此问题。