КОПИЯ PostgreSQL ИЗ командной справки

#database #postgresql #csv-import

#База данных #postgresql #csv-импорт

Вопрос:

У меня есть CSV-файл, который довольно большой (несколько сотен мегабайт), который я пытаюсь импортировать в таблицу Postgres, проблема возникает, когда происходит некоторое нарушение первичного ключа (дубликат записи в CSV-файле)

Если бы это был один, я мог бы вручную отфильтровать эти записи, но эти файлы генерируются программой, которая генерирует такие данные каждый час. Мой скрипт должен автоматически импортировать его в базу данных.

Мой вопрос: Есть ли какой-нибудь выход, чтобы я мог установить флаг в команде КОПИРОВАНИЯ или в Postgres, чтобы он мог пропускать повторяющиеся записи и продолжать импортировать файл в таблицу?

Ответ №1:

Я думал бы подойти к этому двумя способами:

  1. Используйте утилиту, которая может помочь создать «отчет об исключениях» из повторяющихся строк, таких как эта, в процессе КОПИРОВАНИЯ.
  2. Измените свой рабочий процесс, сначала загрузив данные во временную таблицу, проверив ее на наличие дубликатов (возможно, ОБЪЕДИНИТЕ с вашей целевой таблицей и пометьте все существующие во временной таблице флагом dup), а затем импортируйте только отсутствующие записи и отправьте дубликаты в таблицу исключений.

Я лично предпочитаю второй подход, но в вашем случае это зависит от конкретного рабочего процесса.

Комментарии:

1. Я бы также выбрал второе решение (или использовал другой инструмент для загрузки данных)

2. Я бы выбрал второе решение

3. Я попробовал второй подход @dawebber, но по мере увеличения размера базы данных при импорте дальнейший импорт задерживается, а время импорта увеличивается по мере роста таблицы.

4. @regexhacks, в какой части рабочего процесса наблюдается замедление?