nodejs mysql2的依赖包, 5w数据, for 循环插入, 然后我需要获取插入的 成功的 自增id 来 进行另一个操作, 但是执行完 直插入了 2w不到, 也没有报错 是什么情况导致的? 我是 同步执行 插入的
查询网上 基本 都是 一次性插入 大量数据, 我主要想知道我这个情况是因为什么 这种方式有 优化方案吗
nodejs mysql2的依赖包, 5w数据, for 循环插入, 然后我需要获取插入的 成功的 自增id 来 进行另一个操作, 但是执行完 直插入了 2w不到, 也没有报错 是什么情况导致的? 我是 同步执行 插入的
查询网上 基本 都是 一次性插入 大量数据, 我主要想知道我这个情况是因为什么 这种方式有 优化方案吗
在Node.js中使用MySQL2库进行大量数据的同步插入时,遇到只插入了部分数据且没有报错的情况,通常与以下几个因素有关:
批量插入:
使用批量插入(Bulk Insert)而不是单条记录插入。MySQL2支持通过执行一个包含多条INSERT语句的查询来批量插入数据。这可以显著减少网络往返次数和数据库操作次数。
const sql = 'INSERT INTO table_name (column1, column2) VALUES ?';
const values = [
[value1a, value1b],
[value2a, value2b],
// 更多值...
];
connection.query(sql, [values], function (error, results, fields) {
if (error) throw error;
// 处理结果
});
通过上述方法,你应该能够解决只插入了部分数据且没有报错的问题,并优化你的数据插入性能。
3 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
如果你用了连接池,检查
connectionLimit
数值足够大;如果你的插入操作是在事务中进行的,检查是否有
BEGIN
和COMMIT
语句;确保你在每次调用插入函数时都使用
await
来等待其完成;检查
MYSQL
的max_allowed_packet
限制;或者你可以考虑批量插入: