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
来解决这个问题,为什么?