问题标签 [activerecord-import]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
976 浏览

ruby-on-rails - 将 activerecord-import 限制为仅更新

我正在使用activerecord-import批量更新现有记录上的单个字段。

在我学习如何使用宝石的同时。有没有办法限制所以什么都不会被创建?

我目前正在使用import = klass.import columns, records, on_duplicate_key_update: [:amount], validate: true但是不知何故我正在使用空白值创建记录。

0 投票
1 回答
392 浏览

ruby-on-rails - 工作结束后,工作人员中的内存未释放

设想:

我有一份在生产(heroku)中运行进程(sidekiq)的工作。activerecord-import该过程使用gem将数据 (CSV) 从 S3 导入数据库模型。这个 gem 有助于批量插入数据。因此,变量在迭代 CSV 行时dbRows从存储的所有对象中设置了大量内存(一切都很好)。ActiveRecord一旦数据被导入(在db_model.import dbRows:)dbRows被清除(应该是!)并处理下一个对象。

如:(简化脚本以便更好理解)

问题:

作业内存在进程运行时增长,但一旦作业完成,内存不会下降。它永远存在!

调试我发现它dbRows看起来永远不会被垃圾收集,并且我了解了 RETAINED 对象以及内存在 rails 中的工作方式。虽然我还没有找到一种方法来应用它来解决我的问题。

我希望一旦工作完成,在 dbRows 上设置的所有引用都是 GC 并释放工作内存。

任何帮助表示赞赏。

更新:我读过weakref但我不知道是否有用。有什么见解吗?

0 投票
1 回答
1017 浏览

ruby-on-rails - 活动记录导入 on_duplicate_key_update SUM 现有值

如何在 on_duplicate_key_update 期间将数组的值与我现有的行字段相加?

例如:Model.import 数组,on_duplicate_key_update: [ :column_value + array_value]

谢谢你。

0 投票
0 回答
50 浏览

ruby-on-rails - 维护从旧数据库到 Rails 的模型关系?

我正在从旧的 File Maker Pro DB 中获取导出的 CSV 文件,并在 Rails/ActiveRecord 中重做。我正在使用 Gem 'ActiveRecord-import' 来导入 CSV 文件。在我的新 UML 创建中,我已经为一些旧关系创建了一个属性。

问题:如何在我的新联接表中维护这些关系,这些关系将用于未来的 CRUD?例如:我有公司和项目。公司通过 CompanyProject 拥有_许多项目。我正在我的种子文件中进行所有导入。如果我有一个名为old_company_idand的属性old_project_id,我如何在新模式中使用那些旧 ID 来维护关系?

0 投票
1 回答
1086 浏览

ruby-on-rails - 使用 activerecord-import gem 递归导入:has_many 通过关联不起作用

尝试使用“activerecord-import gem”将 CSV 文件导入数据库。我有以下型号

问题.rb

答案.rb

question_answer.rb

以下方法是处理 CSV 数据并准备使用 ActiveRecord import gem 保存

代码插入问题但没有他们的答案,它给出了一个错误说:

我正在使用 Heroku

更新 1

CSV 样本

在此处输入图像描述

非常感谢任何帮助

0 投票
1 回答
407 浏览

ruby-on-rails - 为什么“activerecord-import”不执行批量插入?

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

我尝试将 set 设置insert_values为数组XML.new和纯数组:

有谁知道它为什么以这种方式工作?我在文档中找不到任何内容。

0 投票
1 回答
162 浏览

ruby-on-rails - Ruby on Rails,在 activerecord-import 之后创建多对多关联

我正在根据用户输入以编程方式创建一些记录,并创建要导入的记录数组。

当我检查数据库时,如果它们是新记录,我可以看到关系已经创建。

如果其中一条记录已存在于数据库中,我可以在关联表中看到以下条目,但我还可以看到新记录已在各自的表中创建,因此它们存在但记录 ID 未在关联表。

但如果我第二次运行代码,它将正确添加关系。

这是我的代码

我认为这部分代码有问题

如果其中一条记录已存在,则无法正确创建关系...

0 投票
0 回答
154 浏览

ruby-on-rails - 使用 SQL 服务器导入 ActiveRecord

我正在尝试从 ruby​​ 脚本将 5.6m 行插入 SQLserver db 并找到最快的方法。第一个解决方案是编写一个 SQL Insert 语句并在里面传递值

但当我使用 TinyTDS 时,一次限制为 1000 行。(如果我能以任何方式修复它,建议我。我想在一个 SQL 中一次 35k 行)

我尝试的第二种方法是使用ActiveRecord Import我遇到问题的 gem。所以我的数据在循环中,在第一批插入后它给了我一个错误,比如

ArgumentError: struct size differs

红宝石脚本:

所以这里的问题是它为第一个循环插入了所有 70k 行,但是当我的广告系列 ID 发生第二个循环时,它只会给我一个错误说ArgumentError: struct size differs

FctCoupon.import column, batchData, batch_size: 35000如果我在插入 35k 行后提到一个 batch_size ,它会给出相同的错误

0 投票
1 回答
661 浏览

ruby-on-rails - ActiveRecord 导入 - 重复键值违反唯一约束

尝试使用 ActiveRecord 导入更新大型数据集时,我很难理解插入失败的原因。

在我的模型架构中,存在这一行:

t.index ["variant_id", "stock_location_id"], name: "index_spree_stock_items_on_variant_id_and_stock_location_id", unique: true, where: "(deleted_at IS NULL)"

对于导入,我正在尝试更新其中的许多,当我运行时:

Spree::StockItem.import columns, values, :on_duplicate_key_update => [:count_on_hand]

我收到:

duplicate key value violates unique constraint "index_spree_stock_items_on_variant_id_and_stock_location_id"

但是当我运行时:

Spree::StockItem.import columns, values, :on_duplicate_key_update =>{ conflict_target: [:index_spree_stock_items_on_variant_id_and_stock_location_id], columns: [:count_on_hand] }

我收到:

column "index_spree_stock_items_on_variant_id_and_stock_location_id" does not exist

为什么说这个专栏不存在?索引是否不被视为可用于重复键检查的列?我应该如何通过由两列组合而成的索引来检查重复项?

谢谢

0 投票
1 回答
442 浏览

ruby-on-rails - 通过 activerecord-import gem 从远程 URL 导入 ActiveStorage 图像

我正在尝试通过 CSV 导入产品列表,有一个带有远程 url 的图像列。我正在使用 activerecord 导入 gem,当我使用下面的设置时,我没有收到任何错误或日志,但没有创建图像。

我错过了什么吗?或者有没有更好的方法来处理这个问题。

我能够使用常规 csv 解析导入图像。仍然不确定,为什么 activerecord 导入不起作用。我想我会在 gem 的 github 上问这个。