Как обновить Postgresql с помощью файла CSV несколько раз - PullRequest
0 голосов
/ 10 сентября 2018

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

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете сохранить протоколирование WAL путем оптимизации между TRUNCATE / COPY в одной транзакции . Основная идея состоит в том, чтобы стереть таблицу базы данных с помощью TRUNCATE и повторно импортировать данные с помощью COPY. Это не нужно делать вручную с помощью pgAdmin каждый раз. Это может быть написано с помощью чего-то вроде:

BEGIN;
  -- The CSV file is 'mydata.csv' and the table is 'mydata'.
  TRUNCATE mydata;
  COPY mydata FROM 'mydata.csv' WITH (FORMAT csv);
COMMIT;

Обратите внимание, что для работы требуется доступ с правами суперпользователя. Команда COPY также принимает различные аргументы, поэтому вы можете настроить различные параметры для нулевого значения, заголовков и т. Д.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...