Копирование PostgreSQL из успешно завершено, но скопировано меньше строк, чем строк в файле

У меня есть несколько больших файлов CSV (Tab Delim), которые мне нужно скопировать в одну таблицу. Каждый файл состоит из пяти миллионов строк. Первые два файла прекрасно копируются со всеми пятью миллионами записей. Но на третий я получаю недостающие данные.

Я копирую только около 3,9 миллиона вместо пяти миллионов. Там нет ошибки. Работает просто отлично. Но в файле будет скопировано меньше строк.

Я просмотрел текстовые файлы, и в самом деле в текстовом файле есть пять миллионов отдельных строк.

Таким образом, после очень ручного процесса проб и ошибок я нашел последнюю строку, которая написала правильно (надоедливый кадр, который не записывал, не был ни в конце, ни в начале). Похоже, что это их проблема в определенной области. Поле заканчивается следующей строкой:. "'(Это точка, двойная кавычка, одинарная кавычка) Я использую табуляцию с разделителями, но возможно ли, что postgress читает это как какой-то специальный символ? Я думаю, что все последующие строки могут записывать в это поле для этой строки.

Просто чтобы добавить больше контекста - поле, в котором отбрасываются двойные кавычки, также оказывается полем электронной почты. Так что есть электронное письмо с опечаткой и двойной цитатой. Затем через 1,1 миллиона строк появляется еще одно письмо с опечаткой с двойной кавычкой. Все записи между этими двумя двойными кавычками пишутся неправильно.

Всего 1 ответ


Это неудивительно, если учесть, что логическая строка в файле CSV может занимать более одной физической строки:

1,a text,2019-11-24
2,"a text
that contains a newline",2020-04-01

Есть идеи?

10000