2010-10-15 47 views

回答

1

This question介紹如何使用clone複製您的記錄。

假設1000條記錄已經在可枚舉稱爲counties,我們最終

counties.each { |county| 
    county_copy = county.clone 
    county_copy.col3 = update_function(county_copy.col3) 
    county_copy.save 
} 
+0

我已經在我的代碼中應用了這種方法。但是通過這段代碼,它將創建1000個查詢。我們不能用單個查詢插入所有這個記錄嗎? – 2010-10-15 19:53:09

+0

非天生。我建議使用下面發佈的SQL,如果這是一個關閉。如果這是您需要定期執行的操作,則可能需要重新考慮數據結構。不過,我確實看到這篇博客文章可能會提供指針:http://rubypond.com/blog/bulk-insertion-of-data-with-activerecord – SamStephens 2010-10-15 20:49:34

+0

我已經使用ar-extension來解決我的問題。 – 2010-10-17 15:11:01

0

假設我正確理解你,我會做這樣的事情

INSERT INTO NewTable (Col1, Col2, Col3) 
SELECT Col1, Col2, UpdateFunction(Col3) 
FROM County 

哪裏COL3是要更新的列,UpdateFunction是你希望使用更新列的功能。

編輯:當然,這是SQL,不是Rails的 - 我沒有看夠近,在這個問題的標籤:-)

+0

我希望同樣的事情,但與軌道的方式。 – 2010-10-15 18:48:52

0

@krunalshah你可以建立散列的陣列和陣列傳遞給

Country.create(array) 

,雖然它將執行多個插入查詢。

其他選項使用

connection.execute(<<-SQL) 
    insert into country1 (col1, col2) 
    select col1, col2 from countries 
    SQL