Как указать столбцы при загрузке новых строк в PostgreSQL с помощью pg_bulkload - PullRequest
2 голосов
/ 27 сентября 2010

Я экспериментирую с использованием проекта pg_bulkload для импорта миллионов строк данных в базу данных. Однако ни одна из новых строк не имеет первичного ключа, и только два из нескольких столбцов доступны в моем входном файле. Как мне сообщить pg_bulkload, какие столбцы я импортирую, и как мне сгенерировать поле первичного ключа? Нужно ли мне редактировать мой файл импорта, чтобы он точно соответствовал выводу команды COPY, и сам генерировал поле id?

Например, допустим, столбцы моей базы данных могут быть:

id         title        body        published

Имеющиеся у меня данные ограничены title и published и перечислены в файле с разделителями табуляции. Мой .ctl файл выглядит так:

TABLE = posts
INFILE = stdin
TYPE = CSV
DELIMITER = "   "

1 Ответ

4 голосов
/ 27 сентября 2010

Вы можете использовать FILTER функциональность pg_loader. Что-то вроде:

В базе данных

CREATE FUNCTION pg_bulkload_filter(text, text) RETURNS record
AS $$
  SELECT nextval('tablename_id_seq'), NULL, NULL, $1, $2, NULL
$$ LANGUAGE SQL;

И в контрольном файле pg_bulkload:

FILTER = pg_bulkload_filter

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