首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么'activerecord-import‘不执行大容量插入?

为什么'activerecord-import‘不执行大容量插入?
EN

Stack Overflow用户
提问于 2019-08-17 04:16:55
回答 1查看 338关注 0票数 2

在测试用于大容量插入的activerecord-import库之后,我发现它执行的不是一个巨大的INSERT,而是大量的小INSERTs

代码语言:javascript
复制
Xml.import(
  insert_values,
  ignore: true,
  validate: false,
  batch_size: 1000
)

# => 

INSERT INTO `xmls` (`path`,`import_id`,`status`,`last_modified`,`created_at`,`updated_at`) VALUES ('test-folder/0_0.xml',114,10,'2019-08-16 20:02:20','2019-08-16 20:02:20','2019-08-16 20:02:20')
INSERT INTO `xmls` (`path`,`import_id`,`status`,`last_modified`,`created_at`,`updated_at`) VALUES ('test-folder/0_1.xml',114,10,'2019-08-16 20:02:20','2019-08-16 20:02:20','2019-08-16 20:02:20')
#...
INSERT INTO `xmls` (`path`,`import_id`,`status`,`last_modified`,`created_at`,`updated_at`) VALUES ('test-folder/0_2.xml',114,10,'2019-08-16 20:02:20','2019-08-16 20:02:20','2019-08-16 20:02:20')

我尝试将insert_values设置为XML.new的数组,也可以设置为纯数组的数组:

代码语言:javascript
复制
cols = [:path, :import_id, :status, :last_modified]

insert_values = [
    [ 0] [
        [0] "test-folder/0_0.xml",
        [1] 115,
        [2] 10,
        [3] Sat, 17 Aug 2019 05:37:02 EDT -04:00
    ],
    [ 1] [
        [0] "test-folder/0_1.xml",
        [1] 115,
        [2] 10,
        [3] Sat, 17 Aug 2019 05:37:02 EDT -04:00
    ],
#...
]

Xml.import(
  cols,
  insert_values,
  ignore: true,
  validate: false,
  batch_size: 1000
)

有人知道为什么它是这样工作的吗?我在文档中找不到任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-20 01:20:15

所以,目前,我发现了一个修改过的第三方解决方案https://gist.github.com/abratashov/155bcd0ea2e02940cc6157e6970e7a2b

它创建批处理(默认情况下为1000批)并执行巨大的BULK INSERT

Also Rails 6 supports bulk insert

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57530626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档