簡體   English   中英

在單個插入activerecord中發出大量數據

[英]rails large amount of data in single insert activerecord gave out

因此,我認為大約36,000只是為了安全起見,對於像mysql這樣的現代sql數據庫,我認為這個數字不會太大。 每個記錄只有兩個屬性。

所以我做:所以我將它們收集到一個插入語句中

sql = "INSERT INTO tasks (attrib_a, attrib_b) VALUES (c1,d1),(c2,d2),(c3,d3)...(c36000,d36000);"

ActiveRecord::Base.connection.execute sql

from C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:219:in `log'
from C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/mysql_adapter.rb:323:in `execute_without_analyzer
from c:/r/projects/vendor/plugins/rails-footnotes/lib/rails-footnotes/notes/queries_note.rb:130:in `execute'
from C:/Ruby/lib/ruby/1.8/benchmark.rb:308:in `realtime'
from c:/r/projects/vendor/plugins/rails-footnotes/lib/rails-footnotes/notes/queries_note.rb:130:in `execute'
from (irb):53
from C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb:242

我不知道上面的信息是否足夠,請索要我在這里沒有提供的任何信息。 那么這是什么意思嗎?

謝謝!!!!

問題是因為超時。 我在使用doctrine ORM時遇到同樣的問題。在php中,我們可以通過更改php.ini文件中的腳本時間來解決此問題。 但是我不知道如何更改滑軌的數量。可能有人在這里會有所幫助..

好吧,如果沒有更多信息,我可能會冒險猜測您超出了MySQL服務器的max_packet_size值。

我找到了解決方案:

受Piemesons的建議啟發,我將要包含在一個插入物中的值切成10,000個一組。 因此,n / 10000 .ceil有許多插入。

而且有效!

它仍然是快速的,我仍然不確定是什么配置限制,並且仍在阻止我執行該大小的單個插入操作。 如果有人知道,請提供它作為評論,以便我們都可以從中學習。

最好,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM