NodeJs mysql2 批量处理一百条数据 不用promise
时间: 2025-01-05 13:41:11 浏览: 10
Node.js 中的 `mysql2` 库通常使用 Promise 来处理异步操作,包括批量插入数据。如果你想要避免 Promise,你可以选择使用传统的 callback 或者 async/await 结构。这里是一个例子,展示了如何在不使用 Promise 的情况下,使用 async 函数批量插入一百条数据:
```javascript
const mysql = require('mysql2');
async function batchInsert(connection) {
const queries = [];
for (let i = 0; i < 100; i++) {
// 构造 SQL 查询
const query = 'INSERT INTO your_table (column1, column2) VALUES (?, ?)';
queries.push([value1, value2]); // 填充值
// 如果超过一次连接的最大批量,执行一次
if (queries.length >= connection.config.batch_size || i === 99) {
await executeBatch(queries, connection);
queries = []; // 清空查询列表
}
}
}
// 执行批量插入函数
function executeBatch(queries, connection) {
return new Promise((resolve, reject) => {
connection.query({ type: 'MULTI', queries }, (error, results) => {
if (error) {
reject(error);
} else {
resolve(results);
}
connection.end(); // 关闭连接
});
});
}
// 连接到数据库并开始批处理
const connection = createConnection();
batchInsert(connection).catch(console.error);
```
在这个示例中,我们首先创建一个包含所有查询的数组,然后每达到指定的批量大小(如默认的 100 条),就通过 `executeBatch` 函数一次性执行。注意,你需要确保在每个批次插入后关闭连接。
阅读全文