Я занимаюсь разработкой приложения Rails .Я хотел бы использовать массив для хранения 2 000 000 данных , а затем вставить данные в базу данных следующим образом:
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{...}
).
Из-за того, что количество элементов слишком велико для массива ruby, массив не может содержать 2 000 000 элементов?или массив ruby может содержать столько элементов, и разумно ждать так долго?
Так как я хотел бы использовать массовая вставка в SQL, чтобы ускорить большое время вставки данных в базу данных mysql, поэтому я хотел бы использовать только одно выражение INSERT INTO
, поэтому я сделал вышеупомянутое.Если это плохой дизайн, можете ли вы порекомендовать мне лучший способ?