我正在构建一个带有 Nodejs API 的 Angular2 应用程序,用于使用 NPM 包“mssql”操作 Microsoft SQL Server。 一切都很完美,但我无法弄清楚一件事。
我必须创建一种方法来从 csv 文件发布一批用户?有谁知道我该怎么做?
提前致谢!
编辑
添加了一些我已经拥有的代码(并且有效......)
组件:
`var array: Gebruiker[] = [];
array.push(model);
this.gebruikerService.insertGebruiker(array).subscribe(
...`
服务:
`insertGebruiker(data) {
//Create headers for JSON data
var headers = new Headers();
headers.append('Content-Type', 'application/json');
//create JSON from model
var user = JSON.stringify(data);
console.log("JSON DATA = " + data);
return this.http.post('http://localhost:3000/api/gebruikers/post', user, {headers: headers});
}`
API:
router.post('/gebruikers/post', (req, res) => {
sql.connect(dbconfig, function (err) {
var request = new sql.Request();
if (err) {
console.log(err);
return;
}
//Change variable to JSON
var data = JSON.stringify(req.body);
var json = JSON.parse(data);
console.log(json)
var count = Object.keys(json).length;
var queryInsert = "INSERT INTO [Alg].[User] (FirstName, LastName, PrivateMail, UserName, Password, Auth, Enabled, Created, Manual, LastChanged, Staff) VALUES ";
var queryVariables = "";
var queryString = "";
var counterForHowManyTimesTheQueryIsExecuted = 0;
for (i = 0; i < count; i++) {
//new variables for new user
console.log(i);
console.log(count);
var FirstName = json[i].Firstname;
var LastName = json[i].LastName;
var PrivateMail = json[i].PrivateMail;
var UserName = json[i].UserName;
var Password = json[i].Password;
var Staff = "1";
queryVariables += "('" + FirstName + "', '" + LastName + "', '" + PrivateMail + "', '" + UserName + "', '" + Password + "', 'manual', 1, GetDate(), 1, GetDate(), " + Staff + ")";
if ((i % 1000 == 0 && i != 0) || i == count - 1) {
queryVariables += "; ";
queryString = queryInsert + queryVariables;
queryVariables = "";
counterForHowManyTimesTheQueryIsExecuted++;
console.log(queryString);
request.query(queryString, function (err) {
if (err) {
console.log(err);
return;
}
else {
res.end("POST request finished! ");
}
});
request.query();
}
else {
queryVariables += ", ";
}
}
console.log(counterForHowManyTimesTheQueryIsExecuted);
});
});
最佳答案
使用csv-parse module 。这会将 CSV 文本输入转换为数组或对象
算法如下:
- 上传文件
- 使用
fs
模块读取文件 - 传递到
csv-parse
模块。如前所述,它将返回数组的数组 迭代它并插入数据库
var csvParser = require('csv-parse'); fs.readFile(filePath, { encoding: 'utf-8' }, function(err, csvData) { if (err) { console.log(err); } csvParser(csvData, { delimiter: ',' }, function(err, data) { if (err) { console.log(err); } else { // Insert into database here console.log(data); } }); });
关于sql-server - Nodejs API 批量发布,正文中包含 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43540117/