我正在開發一個Rails應用程序。我想用一個數組來保存2000000數據,然後將數據插入到數據庫中像下面:數組中的大數據
large_data = Get_data_Method() #get 2,000,000 raw data
all_values = Array.new
large_data.each{ |data|
all_values << data[1] #e.g. data[1] has the format "(2,'john','2002-09-12')"
}
sql="INSERT INTO cars (id,name,date) VALUES "+all_values.join(',')
ActiveRecord::Base.connection.execute(sql)
當我運行的代碼,它需要很長很長一段時間在large_data.each{...}
點。其實我現在還在等它完成(已經跑了1個小時了還沒有完成large_data.each{...}
部分)。
是否因爲紅寶石陣列的元素數量過大而導致陣列無法容納2,000,000元素?或紅寶石陣列可以容納這麼多元素,並且等待這麼長時間是合理的?
因爲我想用批量插入在SQL加快MySQL數據庫大數據插入時間,所以我想只用一個INSERT INTO
聲明,這就是爲什麼我做了以上的事情。如果這是一個糟糕的設計,你能否以更好的方式推薦我?
一個小問題:你離開的所有行之間的空行碼? – tokland
你從哪裏得到這些數據?你爲什麼要將它從'large_data'移到'all_values'? –