MonetDB - COPY INTO массовая вставка со специальным символом \

Я использую COPY INTO массово вставить некоторые данные в MonetDB. CSV, с которого я копирую, имеет некоторые специальные символы, такие как \ в некоторых строковых полях, и это сломало вставку. Ошибка, которую я получил:

Не удалось импортировать в строку строки 1 поля 11 "clob", ожидаемый в "data here"

и когда я заменяю \ с / он работает нормально, я думаю, что проблема связана с Java, потому что \ используется как escape-символ, но я не уверен!

это команда, которую я использовал для массовой загрузки:

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 для замены \ с / но это слишком сложная функция обработки при обработке миллионов строк

Почему это происходит и есть ли способ, а не заменить \?

1 ответ

Вы правы, "\" - это спасательный персонаж. Чтобы исправить ошибку импорта, нужно удвоить ее. Замените все вхождения в вашем CSV-файле на "\".

Делать это с функцией REPLACE SQL будет дорого. Если возможно, удвойте "\" в вашем CSV-файле напрямую или измените инструмент, который генерирует CSV-файл, чтобы позаботиться об этом.

Другие вопросы по тегам