问题标签 [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 投票
1 回答
1274 浏览

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 可以这样工作:

0 投票
0 回答
252 浏览

ruby-on-rails - 具有活动记录导入的 Habtm 属性

有什么方法可以将HABTM关联与使用的记录一起保存Active Record Import?我看到一些帖子建议has many / has_many through改用。但如果我能保持目前的结构,那就太好了。

我也找不到Bulk Insertgem 的解决方案。

0 投票
1 回答
938 浏览

ruby-on-rails - Rails + resque后台作业导入未向数据库添加任何内容

我在将用户提供的 excel 文件中的大量记录导入数据库时​​遇到问题。这样做的逻辑运行良好,我正在使用 ActiveRecord-import 来减少数据库调用的数量。但是,当文件太大时,处理可能会花费很长时间,Heroku 将返回超时。解决方案:重新排序并将处理移动到后台作业。

到目前为止,一切都很好。我需要添加 CarrierWave 以将文件上传到 S3,因为我不能只将文件保存在内存中用于后台作业。上传部分也工作正常,我为他们创建了一个模型,并将 ID 传递给排队的作业,以便稍后检索文件,因为我知道我无法将整个 ActiveRecord 对象传递给作业。

我已经在本地安装了 Resque 和 Redis,在这方面似乎一切都设置正确。我可以看到我正在创建的作业正在排队,然后运行而不会失败。该作业似乎运行良好,但没有记录添加到数据库中。如果我在控制台中逐行运行工作中的代码,记录会按照我的预期添加到数据库中。但是当我正在创建的排队作业运行时,什么也没有发生。

我无法完全确定问题可能出在哪里。

这是我的上传控制器的创建操作:

这是作业的简化版本,为了清楚起见,工作表列更少:

无论如何,我可能有一些改进的逻辑,因为现在我将整个文件保存在内存中,但这不是我遇到的问题——即使是一个只有 500 行左右的小文件,这项工作也不会t 向数据库中添加任何内容。

就像我说的那样,当我不使用后台作业时,我的代码运行良好,如果我在控制台中运行它仍然可以运行。但由于某种原因,这项工作什么也没做。

这是我第一次使用 Resque,所以我不知道我是否遗漏了一些明显的东西?我确实创建了一个工人,正如我所说,它似乎确实在运行这项工作。这是 Resque 的详细格式化程序的输出:

在 Resque 仪表板中,作业未记录为失败。它们被执行,我可以在统计页面上看到“已处理”作业的增加。但正如我所说,数据库保持不变。这是怎么回事?如何更清楚地调试作业?有没有办法用 Pry 进入它?

0 投票
2 回答
2109 浏览

ruby-on-rails - Activerecord-import 获取 ArgumentError:无效参数!错误

我正在尝试使用 activerecord 导入进行导入。我收到 Invalid arguments 错误我该如何解决这个问题?

谢谢

我在 postgresql 中的表模式:

我正在尝试使用以下代码导入:

我正在使用 postgresql,rails 5.1。

提前致谢。

0 投票
1 回答
2326 浏览

ruby-on-rails - 活动记录导入正在创建重复记录

我在类方法中使用活动记录导入 gem 来导入从 csv 文件读取的列表数组,如下面的代码所示:

根据活动记录导入文档,我正在尝试将列表的标题和 VIN 字段设置为冲突目标。如果列表的 VIN 字段发生冲突,我想进行更新而不是创建。

但现在,每次我运行 CSV 上传时,它都会从 Listing.import 创建一个新列表,而不是检查它是否冲突。

我哪里错了?

在此处输入图像描述

0 投票
1 回答
99 浏览

ruby-on-rails - 将数据批量导入数据库

我正在使用 MySQL 服务器作为数据库。我想将至少 10000 条记录导入数据库。我发现了一个名为 activerecord-import 的 gem,它通过单个查询将数据导入数据库。使用单个查询导入批量数据会降低性能吗?或者我应该将这些记录分成 2000 条记录并导入它吗?

0 投票
1 回答
167 浏览

ruby-on-rails - 是否有针对我的情况使用 ActiveRecord#Pluck 的有效方法?

我需要将大量数据插入新数据库。就像,很多数据,所以在这个查询的上下文中甚至纳秒计数。我习惯于activerecord-import批量插入 Postgres,但这对于这个问题的范围并不重要。这是我需要的:

对于现有数据库中的每条记录,我需要一个如下所示的数组:

问题是 uuid 存储在我正在循环访问该对象的父对象上,因此#pluck除此之外,它还适用于每个组件。更烦人的是它存储为实际的 uuid,而不是字符串,并且还需要在新数据库中存储为 uuid(不是字符串)。我不确定,但我认为使用SELECTinside of#pluck会返回一个字符串。

但也许更大的问题是我需要在value再次插入之前对 的值进行转换。这是一个简单的转换,实际上只是value / 28或其他东西,但我发现很难在#pluck没有附加#each_with_object或其他东西的情况下将其工作(这大大减慢了速度)

这是现在的查询。根据上面概述的阻塞加载整个记录对我来说似乎真的很愚蠢。我希望有一个替代方案。

不,父母和Data现在没有关联,这不是一个选项,所以我不能急切加载或只是调用Klass.data(他们将在此转换后链接)。

所以理想情况下,这就是我正在寻找的:

但是使用上面列出的参数。

0 投票
1 回答
351 浏览

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

0 投票
2 回答
294 浏览

ruby-on-rails - 从 zip 文件中的模型数据库 csv 批量插入

需要使用 activerecord-import 和 ruby​​zip 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)还是保存文件然后导入?

谢谢你的帮助

0 投票
1 回答
60 浏览

ruby - 如何刷新大型数据库?

我构建了一个 rake 任务以从 Awin 数据馈送中下载一个 zip,并通过 activerecord-import 将其导入我的产品模型。

仅当产品不存在或 last_updated 字段中有新日期时如何更新产品数据库?刷新大型数据库的最佳方法是什么?