Вы можете сохранить протоколирование 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. Если вы считаете, что ваша ситуация нуждается в этом, отследить его не сложно.