为什么ActiveRecord Model.import无法在MySQL中插入批量记录?

kgsdhlau  于 11个月前  发布在  Mysql
关注(0)|答案(1)|浏览(91)

我尝试使用ActiveRecord导入方法插入大约200,000条记录。它失败了,出现TypeError:can 't quote Hash错误。我在网上搜索了一下,但没有任何与我的场景相关的有意义的内容。
我从较小的尺寸开始,成功地达到了120,000条记录。如果我继续尝试,我想我可以找到一个限制。除了将记录插入较小的批次外,还有什么其他方法吗?
这是我的配置- Rails 5.0.3,Ruby 2.3.0,Mysql 5.1.73。我知道这些都很过时了。
有人有类似的问题,你是如何解决的?

gg58donl

gg58donl1#

“TypeError:can't quote Hash”是由连接适配器抛出的。源代码。
这个错误可以很容易地重新创建:

Arel::Nodes.build_quoted({}).to_sql. 
#=> TypeError: can't quote Hash

字符串
这意味着在你试图导入的记录中,很可能有一个空的Hash,而不是JSON(这可能是你想要的)。
如果是这种情况,您可能需要搜索记录以确定这些违规哈希的位置并相应地修改它们。例如,如果它们旨在成为JSON数据,则可以使用Hash#to_json转换它们。

相关问题