问题标签 [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.
ruby-on-rails - 将 activerecord-import 限制为仅更新
我正在使用activerecord-import
批量更新现有记录上的单个字段。
在我学习如何使用宝石的同时。有没有办法限制所以什么都不会被创建?
我目前正在使用import = klass.import columns, records, on_duplicate_key_update: [:amount], validate: true
但是不知何故我正在使用空白值创建记录。
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
但我不知道是否有用。有什么见解吗?
ruby-on-rails - 活动记录导入 on_duplicate_key_update SUM 现有值
如何在 on_duplicate_key_update 期间将数组的值与我现有的行字段相加?
例如:Model.import 数组,on_duplicate_key_update: [ :column_value + array_value]
谢谢你。
ruby-on-rails - 维护从旧数据库到 Rails 的模型关系?
我正在从旧的 File Maker Pro DB 中获取导出的 CSV 文件,并在 Rails/ActiveRecord 中重做。我正在使用 Gem 'ActiveRecord-import' 来导入 CSV 文件。在我的新 UML 创建中,我已经为一些旧关系创建了一个属性。
问题:如何在我的新联接表中维护这些关系,这些关系将用于未来的 CRUD?例如:我有公司和项目。公司通过 CompanyProject 拥有_许多项目。我正在我的种子文件中进行所有导入。如果我有一个名为old_company_id
and的属性old_project_id
,我如何在新模式中使用那些旧 ID 来维护关系?
ruby-on-rails - 为什么“activerecord-import”不执行批量插入?
在测试了用于批量插入的 activerecord-import库后,我发现它执行的不是一个巨大INSERT
的而是很多小的INSERTs
我尝试将 set 设置insert_values
为数组XML.new
和纯数组:
有谁知道它为什么以这种方式工作?我在文档中找不到任何内容。
ruby-on-rails - Ruby on Rails,在 activerecord-import 之后创建多对多关联
我正在根据用户输入以编程方式创建一些记录,并创建要导入的记录数组。
当我检查数据库时,如果它们是新记录,我可以看到关系已经创建。
如果其中一条记录已存在于数据库中,我可以在关联表中看到以下条目,但我还可以看到新记录已在各自的表中创建,因此它们存在但记录 ID 未在关联表。
但如果我第二次运行代码,它将正确添加关系。
这是我的代码
我认为这部分代码有问题
如果其中一条记录已存在,则无法正确创建关系...
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 ,它会给出相同的错误
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
为什么说这个专栏不存在?索引是否不被视为可用于重复键检查的列?我应该如何通过由两列组合而成的索引来检查重复项?
谢谢
ruby-on-rails - 通过 activerecord-import gem 从远程 URL 导入 ActiveStorage 图像
我正在尝试通过 CSV 导入产品列表,有一个带有远程 url 的图像列。我正在使用 activerecord 导入 gem,当我使用下面的设置时,我没有收到任何错误或日志,但没有创建图像。
我错过了什么吗?或者有没有更好的方法来处理这个问题。
我能够使用常规 csv 解析导入图像。仍然不确定,为什么 activerecord 导入不起作用。我想我会在 gem 的 github 上问这个。