[开发笔记] - egg.js 中使用 mysql 批量导入数据

461 阅读1分钟

问题描述

egg.js 中的 mysql 插件整合了常用的增删查改功能,但是如果我们需要批量导入一批数据应该怎么办?

解决方案

我们可以利用自定义 sql 语句,app.mysql 支持 query() 方法,可以自定义 sql 语句。egg.js 中也是使用 node.jsmysql 插件作为依赖,可以参考 mysql 的传参方式。

特别注意,使用 ? 自定义参数时,不能忘记原有参数为数组,因此,批量导入的参数应该为三维数组

参数示例

[ [ [...], [...], [...] ] ]

示例代码

// egg.js 框架的 Controller 或者 Service 层
// ? 为自定义参数位置
const sqlStr = 'INSERT INTO demo_table (`name`, `desc`, created_at) values ?';
// 导入数据,二维数组
const importData = [
  ['小红', '班长', this.app.mysql.literals.now,],
  ['小明', '学习积极', this.app.mysql.literals.now,]
];

// 特别注意该参数,参数还需要补充一层[],是三维数组
const result = await this.app.mysql.query(sqlStr, [importData]);
// result.affectedRows => 2