Как отформатировать полученный SFTP файл CSV и пакетировать pu sh в Postgres.? - PullRequest
0 голосов
/ 26 мая 2020

Шаги, которые мне нужно выполнить: 1. Получение файла CSV с сервера SFTP 2. Полученный файл не отформатирован, что я пытался использовать парсер fast-csv, но не смог. 3. Разместите все данные в базе данных Postgres.

const Pool = require('pg').Pool
const Client = require('ssh2-sftp-client');
let sftp = new Client();
    config = {
      host: '0.0.0.0',
      port: '22',
      username: 'tester',
      password: 'password',
    } 

       function storeValues() {
        console.log('calling');
        sftp.connect(config).then(() => {  
        sftp.get('/Retail Transaction Data.csv').then((data) => {
        console.log(""+data)
        **//FORMAT THE DATA FOR THE DATABASE**
        const pool = new Pool({
          user: 'postgres',
          host: 'localhost',
          database: 'retailtransaction',
          password: 'password',
          port: 5433,
        })

          // open the connection    
          let query ="INSERT INTO rt_transactions (Trans_ID, Store_Name, Store_Type, Category, Brand, Product, Cust_ID, Quantity, Rate, Amount, Trand_Dt, Months) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)";
          pool.query(query, [data], (error, response) => {
            while(error){
              console.log(error.message)
            }
            console.log(response)       
          });
        });
      });  
      }

      storeValues();

1 Ответ

0 голосов
/ 11 июля 2020

Я использовал pg-copy-streams для выполнения этой задачи. Документации по этой ссылке достаточно, чтобы все объяснить: https://www.npmjs.com/package/pg-copy-streams

pool.connect(function (err, client, done) {
  var stream = client.query(copyTo('COPY my_table TO STDOUT CSV'))
  stream.pipe(process.stdout)
  stream.on('end', done)
  stream.on('error', done)
})
...