Node.js копирует поток в базу данных Postgres: процесс прерывается, когда входной файл содержит> 3M строк - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь скопировать 10M строк тестовых данных, записав их в csv, а затем скопировать из потока чтения из csv в db.Проблема в том, что у меня не хватает памяти, если я не разбиваю его и не запускаю скрипт несколько раз.

Я что-то не так делаю, что вызывает утечки памяти? Это работает на компьютере моего одноклассниказа один раз, но у меня есть только 1 ГБ ОЗУ для работы.Если я попытаюсь записать более 3M за один запуск сценария, процесс прекратится.

my_csv = csv.createWriteStream({headers:false, objectMode: true}),
         stream = fs.createWriteStream(inputFile);
stream.on('finish' ()=> console.log('complete'));
my_csv.pipe(stream);
for loop -> 10M {
  my_csv.write({ an obj literal containing random data });
}
my_csv.end();

Было бы быстрее пропустить запись в csv и каким-либо образом напрямую выполнить массовую вставку в db? В конце эта ссылка предлагает способ создания потока данных, поэтому я думаю, что сокращение шага записи в файл будет еще быстрее.https://medium.com/@sairamkrish/how-to-do-postgresql-bulk-insert-with-node-pg-copy-streams-f4301ec29388

Чтобы написать в БД, я следовал этому уроку: https://www.mydatahack.com/bulk-loading-postgres-with-node-js/

...