2016-01-12 1 views
0

J'utilise COPY INTO pour insérer en bloc des données dans MonetDB. Le csv que je copie à partir de quelques caractères spéciaux comme \ dans certains champs de chaîne et il a cassé l'insertion. L'erreur que je suis arrivé est:MonetDB - COPY Dans une insertion en bloc avec un caractère spécial

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

et quand je remplacerai \ avec / il fonctionne très bien, je pense que le problème lié à Java, car \ est en utilisant comme caractère d'échappement, mais je ne suis pas sûr!

ceci est la commande I utilisé pour la charge en vrac:

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

et ceci est une ligne d'échantillon:

"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" 

je trouve un travail autour qui utilisent la fonction REPLACE dans le SQL pour remplacer \ avec / mais c'est trop lourde fonction de traitement lors de la manipulation des millions de lignes

Pourquoi est-ce ng et est-il de toute façon plutôt que de remplacer le \?

+0

Pourriez-vous donner un exemple minimal avec certaines de vos données et la ligne COPY INTO que vous avez utilisée? Il devrait être possible de contourner cela. –

+0

J'utilise cette ligne COPY INTO: copiez dans dhpo.dbo.submissiontransactions3 depuis '/home/etltest/out.csv' en utilisant les délimiteurs ';', '\ n', '"'; –

+0

et la ligne d'exemple ::: :: "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 " –

Répondre

0

Vous avez raison, le '\' est un caractère d'échappement. Pour corriger l'erreur d'importation, vous devez le doubler. Remplacez toutes les occurrences '\' dans votre fichier csv par '\'.

Faire cela avec la fonction REPLACE SQL sera coûteux. Si possible, doublez le '\' dans votre fichier CSV directement, ou changez l'outil qui génère le fichier CSV pour prendre soin de cela.