Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将数据从txt文件写入节点js中的数据库_Sql_Node.js - Fatal编程技术网

Sql 将数据从txt文件写入节点js中的数据库

Sql 将数据从txt文件写入节点js中的数据库,sql,node.js,Sql,Node.js,我从文本文件中读取数据: const byline = require('byline'); const fs = require('fs'); var stream = byline(fs.createReadStream('C:/Users/../test.txt')); var index = 0; var headers; var data = []; stream.on('data', function(line) { var currentData; var en

我从文本文件中读取数据:

const byline = require('byline');
const fs = require('fs');

var stream = byline(fs.createReadStream('C:/Users/../test.txt'));
var index = 0;
var headers;
var data = [];

stream.on('data', function(line) {
    var currentData;
    var entry;
    var i;

    line = line.toString(); // Convert the buffer stream to a string line
    //line = Buffer.from(line, 'latin1').toString();
    if (index === 0) {
        headers = line.split(/[ ]+/);
    } else {
        currentData = line.split(/[ ]+/);
        entry = {};
        for (i = 0; i < headers.length; i++) {
            entry[headers[i]] = currentData[i];
        }
        data.push(entry);
    }
    index++;
});
stream.on("error", function(err) {
    console.log(err);
});
stream.on("end", function() {
    console.log(data);
    console.log("Done");
});
constbyline=require('byline');
常数fs=要求('fs');
var stream=byline(fs.createReadStream('C:/Users/./test.txt');
var指数=0;
var头;
var数据=[];
stream.on('data',函数(行){
var电流数据;
风险价值分录;
var i;
line=line.toString();//将缓冲区流转换为字符串行
//line=Buffer.from(line'latin1').toString();
如果(索引==0){
headers=line.split(/[]+/);
}否则{
currentData=line.split(/[]+/);
条目={};
对于(i=0;i
那很好用。所以现在我正试图将其写入我的数据库中。因此,我在流的末尾实现了这一部分,当所有数据都被读取时

stream.on("end", function() {
    console.log(data);
    console.log("Done");

    for(h = 0; h < data.length; h++){ 
        let name = data[h].Name;
        let id = data[h].ID;
        let text = data[h].Text;
        let text1 = data[h].Text1;
        let text2 = data[h].Text2;
        let text3 = data[h].Text3;


        Conn.query('INSERT INTO Config SET ? ', { Name: name, ID: id, Text: text, Text1: text1, Text2: text2, Text3: text3}, function (error, result, fields) {
            if (error) throw error;

        });
    }
    return res.send({ error: false, data: result, message: 'New configuration has been created.' });
});
stream.on(“end”,function()){
控制台日志(数据);
控制台日志(“完成”);
对于(h=0;h

但这似乎不起作用。我遗漏了什么?

您可以尝试以下方法

stream.on("end", function() {
  console.log(data);
  console.log("Done");
  var promises = [];
  for (h = 0; h < data.length; h++) {

    let name = data[h].Name;
    let id = data[h].ID;
    let text = data[h].Text;
    let text1 = data[h].Text1;
    let text2 = data[h].Text2;
    let text3 = data[h].Text3;
    promises.push(new Promise(function insertIntoDatabase(resolve, reject) {
      Conn.query('INSERT INTO Config SET ? ', {
        Name: name,
        ID: id,
        Text: text,
        Text1: text1,
        Text2: text2,
        Text3: text3
      }, function(error, result, fields) {
        if (error) reject(error);
        else resolve();
      })
    }));
  }
  Promise.all(promises)
    .then(function(data) {
      res.send({
        error: false,
        data: result,
        message: 'New configuration has been created.'
      });
    })
    .catch(function(err) {
      console.log("Error occured due to : ", err);
      res.send({
        error: true,
        data: null,
        message: 'Error during config'
      });
    });

  //It is a bad practise to have a async operation that can throw error inside a synchronous loop
  /*
   for(h = 0; h < data.length; h++){ 
          let name = data[h].Name;
          let id = data[h].ID;
          let text = data[h].Text;
          let text1 = data[h].Text1;
          let text2 = data[h].Text2;
          let text3 = data[h].Text3;

          Conn.query('INSERT INTO Config SET ? ', { Name: name, ID: id, Text: text, Text1: text1, Text2: text2, Text3: text3}, function (error, result, fields) {
              if (error) throw error;

          });
      }

    */

});

stream.on(“end”,function()){
控制台日志(数据);
控制台日志(“完成”);
var承诺=[];
对于(h=0;h
请提供有关您使用的库的更多信息,或者如果有错误,请提供有关错误的详细信息。这也不起作用,但我找不到问题。找不到文件。这就是问题所在。我可以通过将文件复制到node js项目的根目录中,将路径设置为
/test.txt
来解决这个问题,为什么?