Справка по команде COPY FROM PostgreSQL - PullRequest
1 голос
/ 29 апреля 2011

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

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

У меня вопрос: есть ли какой-то выход, что я могу установить флаг в команде COPY или в Postgres, чтобы он мог пропустить дублирующиеся записи и продолжить импорт файла в таблицу?

1 Ответ

3 голосов
/ 29 апреля 2011

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

  1. Использовать утилиту, которая может помочь создать «отчет об исключениях» из повторяющихся строк, , такой как этот во времяпроцесс COPY.
  2. Измените рабочий процесс, сначала загрузив данные во временную таблицу, массируя их для дубликатов (возможно, СОЕДИНЯЙТЕСЬ со своей целевой таблицей и пометив все существующие во временной таблице флагом dup), а затем толькоимпортируйте отсутствующие записи и отправьте дубликаты в таблицу исключений.

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

...