📅  最后修改于: 2023-12-03 15:11:32.454000             🧑  作者: Mango
在 TSQL 中批量插入 csv 文件是一项常见的任务。在 TypeScript 中,我们可以使用以下代码实现简单的批量插入。
我们需要准备一个 csv 文件用于测试,假设文件名为 test.csv
,文件内容如下:
name,age,email
Alice,25,alice@example.com
Bob,33,bob@example.com
Charlie,42,charlie@example.com
我们需要安装以下依赖才能运行代码:
运行以下命令安装依赖:
npm i tedious csv-parse
我们需要先连接数据库,然后读取 csv 文件并插入数据库。
import { Connection, Request, TYPES } from 'tedious';
import * as fs from 'fs';
import * as csvParse from 'csv-parse';
const config = {
server: 'localhost',
authentication: {
type: 'default',
options: {
userName: 'sa',
password: 'password' // TODO: 替换实际的用户名和密码
}
},
options: {
database: 'mydatabase',
encrypt: true // 如果使用 SSL,请将此选项设置为 true
}
};
const connection = new Connection(config);
connection.on('connect', err => {
if (err) {
console.error(err);
return;
}
console.log('connected');
// 读取 csv 文件
const fileStream = fs.createReadStream('test.csv');
const csvParser = csvParse({
columns: true,
skip_empty_lines: true
});
fileStream.pipe(csvParser);
let rowCount = 0;
csvParser.on('data', row => {
// 插入数据库
const request = new Request(
'INSERT INTO users (name, age, email) VALUES (@name, @age, @email)',
(err, rowCount) => {
if (err) {
console.error(err);
} else {
console.log(`${rowCount} row(s) inserted`);
}
}
);
request.addParameter('name', TYPES.NVarChar, row.name);
request.addParameter('age', TYPES.Int, row.age);
request.addParameter('email', TYPES.NVarChar, row.email);
connection.execSql(request);
rowCount++;
});
csvParser.on('end', () => {
console.log(`${rowCount} rows inserted in total`);
});
});
运行以下命令执行代码:
ts-node index.ts
这是一个简单的批量插入 TSQL csv 的 TypeScript 代码示例,仅供参考。在实际使用中,您可能需要考虑以下因素: