Мне нужно время от времени загружать данные в psql db через приложение узла.
Я использую пакет node-postgres , который, кажется, отлично работает с INSERT
операторами.
Так как мой db_dum огромен, мне нужно перейти к оператору COPY
в pg_dump (для лучшей производительности), но при попытке загрузить все данные при попытке загрузить данные с пакетом pg
в Node - Это работает, если Я использую командную строку psql
Файл дампа psql, который у меня есть, огромен и включает в себя COPY
такие выражения:
COPY hibernate.address (id, create_timestamp,
update_timestamp, street_address_line_1, street_address_line_2, city, state_code, postal_code, postal_code_suffix, country_code, latitude, longitude, updated_by_base_user_id) FROM stdin;
379173 2017-02-20 02:34:17.715-08 2018-01-20 08:34:17.715-08 3 Brewster St \N Phoenix AZ 17349 \N US \N \N 719826
/.
Вот псевдокод для приложения узла, выполняющего файл дампа sql:
const sqlFile = fs.readFileSync('data_dump.sql').toString();
const connectionString = `postgres://<user>:${PgPassword}@${pgIpAndPort}/<table>`;
const client = new pg.Client(connectionString);
lient.connect();
client.query(sqlFile);
Вот пример pg_dump
команды, которую я использую (которая предназначена только для данных - без схемы):
pg_dump -U <user> --data-only --disable-triggers -n hibernate <table_name> > <dump_file.sql>
но это не работает, когда я пытаюсь загрузить данные через приложение узла
Я знаю, --column-inserts
решит проблему, но это резко снизит производительность.
Поэтому я ищу возможные решения для загрузки данных с помощью оператора COPY tbl FROM stdin;
в приложении узла
Любые предложения / комментарии приветствуются.