NodeJS:从sftp服务器读取CSV文件并转换为JSON [英] NodeJS: Read csv file from sftp server and convert it to JSON

查看:14
本文介绍了NodeJS:从sftp服务器读取CSV文件并转换为JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用ssh2-sftp-client读取CSV文件并创建一个ReadableStream。然后,我尝试在csvtojson库的帮助下将这个可读的Stream转换为Json。但是,我总是收到以下错误:

TypeError:ReadStream.tube不是函数

以下是我到目前为止的代码:

let Client = require('ssh2-sftp-client');
let sftp = new Client();
var csv = require("csvtojson");

sftp.connect({
    host: 'HOST',
    port: 'PORT',
    username: 'USERNAME',
    password: 'PASSWORD'
}).then(() => {
    return sftp.get('/home/user/etc/testfile.csv');
}).then((data) => {
    csv()
        .fromStream(data)
        .subscribe(function (jsonObj) { //single json object will be emitted for each csv line
            // parse each json asynchronousely
            return new Promise(function (resolve, reject) {
                resolve()
                console.log(jsonObj);
            })
        })

}).catch((err) => {
    console.log(err, 'catch error');
});

有没有人知道我是否正确使用了这两个库,或者我尝试实现的目标是否不可能实现?

推荐答案

您收到错误,因为sftp.get返回<[3-0]>,而您试图将其传递给需要<[3-1]>的函数。

将您的代码更改为

let Client = require('ssh2-sftp-client');
let sftp = new Client();
var csv = require("csvtojson");

sftp.connect({
  host: 'HOST',
  port: 'PORT',
  username: 'USERNAME',
  password: 'PASSWORD'
}).then(() => {
  return sftp.get('/home/user/etc/testfile.csv');
}).then((data) => {
  csv()
    .fromString(data.toString()) // changed this from  .fromStream(data)
    .subscribe(function(jsonObj) { //single json object will be emitted for each csv line
      // parse each json asynchronously
      return new Promise(function(resolve, reject) {
        resolve()
        console.log(jsonObj);
      })
    })
}).catch((err) => {
  console.log(err, 'catch error');
});

这篇关于NodeJS:从sftp服务器读取CSV文件并转换为JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆