问题标签 [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 - 如何初始化 PaperTrail 版本以使用 ActiveRecord-import gem 执行批量插入?
我正在使用activerecord-import gem在单个查询中导入多个 ActiveRecord 文档。然后我使用保存的文档 ID 初始化相关关联并导入它们,等等。
但是,我需要为所有保存的文档提供带有事件的PaperTrail gem版本。create
是否有一些直接的方法来初始化它们以使执行批量插入成为可能?
注意:AR-Import gem 忽略所有回调,所以我在导入后手动处理它们。
谢谢!
UPD-20/05/17:
目前我已经用PaperTrail::Model
. 这是我的.../initializers/paper_trail.rb
:
UPD-28/01/21:
使用 PaperTrail v10.xx 可以这样工作:
ruby-on-rails - 具有活动记录导入的 Habtm 属性
有什么方法可以将HABTM
关联与使用的记录一起保存Active Record Import
?我看到一些帖子建议has many / has_many through
改用。但如果我能保持目前的结构,那就太好了。
我也找不到Bulk Insert
gem 的解决方案。
ruby-on-rails - Rails + resque后台作业导入未向数据库添加任何内容
我在将用户提供的 excel 文件中的大量记录导入数据库时遇到问题。这样做的逻辑运行良好,我正在使用 ActiveRecord-import 来减少数据库调用的数量。但是,当文件太大时,处理可能会花费很长时间,Heroku 将返回超时。解决方案:重新排序并将处理移动到后台作业。
到目前为止,一切都很好。我需要添加 CarrierWave 以将文件上传到 S3,因为我不能只将文件保存在内存中用于后台作业。上传部分也工作正常,我为他们创建了一个模型,并将 ID 传递给排队的作业,以便稍后检索文件,因为我知道我无法将整个 ActiveRecord 对象传递给作业。
我已经在本地安装了 Resque 和 Redis,在这方面似乎一切都设置正确。我可以看到我正在创建的作业正在排队,然后运行而不会失败。该作业似乎运行良好,但没有记录添加到数据库中。如果我在控制台中逐行运行工作中的代码,记录会按照我的预期添加到数据库中。但是当我正在创建的排队作业运行时,什么也没有发生。
我无法完全确定问题可能出在哪里。
这是我的上传控制器的创建操作:
这是作业的简化版本,为了清楚起见,工作表列更少:
无论如何,我可能有一些改进的逻辑,因为现在我将整个文件保存在内存中,但这不是我遇到的问题——即使是一个只有 500 行左右的小文件,这项工作也不会t 向数据库中添加任何内容。
就像我说的那样,当我不使用后台作业时,我的代码运行良好,如果我在控制台中运行它仍然可以运行。但由于某种原因,这项工作什么也没做。
这是我第一次使用 Resque,所以我不知道我是否遗漏了一些明显的东西?我确实创建了一个工人,正如我所说,它似乎确实在运行这项工作。这是 Resque 的详细格式化程序的输出:
在 Resque 仪表板中,作业未记录为失败。它们被执行,我可以在统计页面上看到“已处理”作业的增加。但正如我所说,数据库保持不变。这是怎么回事?如何更清楚地调试作业?有没有办法用 Pry 进入它?
ruby-on-rails - Activerecord-import 获取 ArgumentError:无效参数!错误
我正在尝试使用 activerecord 导入进行导入。我收到 Invalid arguments 错误我该如何解决这个问题?
谢谢
我在 postgresql 中的表模式:
我正在尝试使用以下代码导入:
我正在使用 postgresql,rails 5.1。
提前致谢。
ruby-on-rails - 将数据批量导入数据库
我正在使用 MySQL 服务器作为数据库。我想将至少 10000 条记录导入数据库。我发现了一个名为 activerecord-import 的 gem,它通过单个查询将数据导入数据库。使用单个查询导入批量数据会降低性能吗?或者我应该将这些记录分成 2000 条记录并导入它吗?
ruby-on-rails - 是否有针对我的情况使用 ActiveRecord#Pluck 的有效方法?
我需要将大量数据插入新数据库。就像,很多数据,所以在这个查询的上下文中甚至纳秒计数。我习惯于activerecord-import
批量插入 Postgres,但这对于这个问题的范围并不重要。这是我需要的:
对于现有数据库中的每条记录,我需要一个如下所示的数组:
问题是 uuid 存储在我正在循环访问该对象的父对象上,因此#pluck
除此之外,它还适用于每个组件。更烦人的是它存储为实际的 uuid,而不是字符串,并且还需要在新数据库中存储为 uuid(不是字符串)。我不确定,但我认为使用SELECT
inside of#pluck
会返回一个字符串。
但也许更大的问题是我需要在value
再次插入之前对 的值进行转换。这是一个简单的转换,实际上只是value / 28
或其他东西,但我发现很难在#pluck
没有附加#each_with_object
或其他东西的情况下将其工作(这大大减慢了速度)
这是现在的查询。根据上面概述的阻塞加载整个记录对我来说似乎真的很愚蠢。我希望有一个替代方案。
不,父母和Data
现在没有关联,这不是一个选项,所以我不能急切加载或只是调用Klass.data
(他们将在此转换后链接)。
所以理想情况下,这就是我正在寻找的:
但是使用上面列出的参数。
ruby-on-rails - 如何使 activerecord-import 使用序列
我有以下模型:
我正在使用 ActiveRecord 创建对象,其中:
我应该传递什么值insights_id
才能使用models_insights_id_seq
序列?尝试DEFAULT
并没有传递任何东西,并且都无法使用序列,即,使 activerecord-import 生成nextval('public.models_insights_id_seq')
注意:这个问题是关于指示为列activerecord-import
生成,而不是关于使用 ActiveRecord 获取序列下一个值。nextval('public.models_insights_id_seq')
insights_id
ruby-on-rails - 从 zip 文件中的模型数据库 csv 批量插入
需要使用 activerecord-import 和 rubyzip gem 将 zip 文件中的 csv 数据导入我的产品模型。
此代码有效(下载 zip 并显示 csv 名称)
在“zip.each 循环”中,我尝试了这个:
我有以下错误 TypeError: no implicit conversion of Zip::Entry into String
根据本教程:https ://mattboldt.com/importing-massive-data-into-rails/
用这个 csv 刷新我的产品模型数据的最佳方法是什么?我必须将文件读入内存(entry.get_input_stream.read)还是保存文件然后导入?
谢谢你的帮助
ruby - 如何刷新大型数据库?
我构建了一个 rake 任务以从 Awin 数据馈送中下载一个 zip,并通过 activerecord-import 将其导入我的产品模型。
仅当产品不存在或 last_updated 字段中有新日期时如何更新产品数据库?刷新大型数据库的最佳方法是什么?