📜  简单批量插入 TSQL csv - TypeScript (1)

📅  最后修改于: 2023-12-03 15:11:32.454000             🧑  作者: Mango

简单批量插入 TSQL csv - TypeScript

在 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 代码示例,仅供参考。在实际使用中,您可能需要考虑以下因素:

  • csv 文件的结构和内容可能会有所不同,您需要根据实际情况进行修改。
  • 如果插入的数据较多,您需要考虑如何优化性能,例如使用事务批量插入。
  • 您需要根据实际情况替换连接字符串、用户名、密码和数据库名称。