在Ruby中,我有一個測試,它是ActiveSupport::TestCase
的一個子類,並通過Postgres(實際上是Greenplum)數據庫中的ActiveRecord
子類訪問表。對於一個特定的測試,我需要填充大約一百萬行的表格,但我並不在乎它裏面的內容。我可以做類似爲ActiveRecord測試創建數百萬條記錄
for i in 1...1000000 do
MyTable.create(:column1 => 'value', :column2 => 'value')
end
但這需要很長時間才能運行。我可以通過在交易中包裝它使其更快一點,以便create
不會每次創建一個新的,但這隻會節省很多時間。
有沒有一些很好的方法來做到這一點,以便我不必在表格中執行大量僞造值的插入操作? (注意:爲了試圖僞裝表中包含一百萬條記錄而不知情的事情,因爲我後來需要與實際行進行交互;對於這個特定的測試,我只是不在乎它們是什麼)
如果你可以放入原始SQL,你可以使用這個:http://www.postgresql.org/docs/9.0/static/plpgsql-control-structures.html#PLPGSQL-INTEGER-FOR –
使用'for'是反模式。它只是調用'each',所以它更有意義(並且遵循OO模式)來做'(1 ... 1000000)。每個都...結束'。或者甚至更好,只是「1000000次......做......結束」。 –