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";"3d67502e-94ed-4e3d";"2014-01-01 00:15:25.283"
Я нашел работу, вокруг которой использовать REPLACE
функция в SQL для замены \
с /
но это слишком сложная функция обработки при обработке миллионов строк
Почему это происходит и есть ли способ, а не заменить \
?
1 ответ
Вы правы, "\" - это спасательный персонаж. Чтобы исправить ошибку импорта, нужно удвоить ее. Замените все вхождения в вашем CSV-файле на "\".
Делать это с функцией REPLACE SQL будет дорого. Если возможно, удвойте "\" в вашем CSV-файле напрямую или измените инструмент, который генерирует CSV-файл, чтобы позаботиться об этом.