TransWikia.com

restore dump com nodejs

Stack Overflow em Português Asked by Max Rogério on January 25, 2021

Preciso restaurar um banco de dados postgres com nodejs…

Minha rotina faz o download do ultimo backup (custom dump) pelo ftp, e cria o banco (sem a estrutura).

Agora preciso executar esse arquivo que fiz o download para restaurar o banco. Mas não sei como.

Pensei que só era só ler o conteúdo do arquivo e executar como uma query, mas não. Também não encontrei nenhuma lib ou exemplo para isso.

Preciso de exemplos ou alguma idéia de como fazer isso…

One Answer

No Node.js você pode executar uma aplicação externa. Neste caso usaremos o módulo child_process para executar o psql e despejar o conteúdo no novo banco:

const { spawn } = require('child_process');
const { createReadStream } = require('fs');

const restaurar = (destino, origem) => {
  console.time('Despejando conteúdo.');
  // Cria o banco de dados
  const child = spawn('createdb', [destino]);

  child.on('exit', () => {
    const conteudo = createReadStream(origem);
    const psql = spawn('psql', [destino]);
    conteudo.pipe(psql.stdin);
    console.timeEnd('Despejando conteúdo.');
  });
};

child_process

The child_process module provides the ability to spawn child processes in a manner that is similar, but not identical, to popen(3).

Em tradução livre:

O módulo child_process provê a habilidade de executar processos filhos de uma maneira similar, mas não idêntica, ao popen(3).

Answered by Sorack on January 25, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP