mysql - 在 sequelize 中插入百万记录的最佳方法是什么

标签 mysql node.js sequelize.js

使用 sequelize 插入一百万条记录的最佳方法是什么,目前我正在使用 bulkCreate,但速度很慢而且没有完成。

那么你认为有办法做到吗。

return dbmyTable.bulkCreate(array, {transaction: t}).then(function (item) {
       return res.jsonp('Done');
})

最佳答案

我在使用 PostgreSQL 时遇到了同样的问题,并且同意 @e4c5 的观点,一些内置的数据库方法最适合这个问题。问题是在执行 bulkCreate 之前,您正在将所有数据加载到内存中。如果你有一百万行,你可能会在它执行之前用完内存。即使如此,如果您使用类似 async.cargo 的方式将其排队,您仍然会等待数据库返回给您,而数据会异步消耗您的所有内存。

我的解决方案是放弃 sequelize 以加载数据(至少在他们实现流媒体或其他东西之前(请参阅他们的 github issue #2454 ))。我最终创建了 db-streamer , 但它现在只有 pg 支持。你会想看看streamsql用于 mysql。

关于mysql - 在 sequelize 中插入百万记录的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918727/

相关文章:

php - 为什么我的数据不能用 mysql_real_escape_string 正确剥离?

MySQL:在不同表的两个字段中始终保持相同的值

node.js - Sails.JS 如何将非 WWW 重定向到 WWW 以及将 HTTP 转发到 HTTPS

mysql - Sequelize 得到没有对象的纯数组

mysql - Sequelize N :M ParentModel. setChilds(ChildArray) 不是函数(魔术方法?)

postgresql - Sequelize 从多个表中删除偏执

MySQL 按字段查询 "flatten"或数据透视表

mysql - PHPUnit/DbUnit "Too many connections"

javascript - bcrypt 哈希输出的长度是多少?

javascript - 获取原始参数输入 - Dialogflow Fulfillment