G G*_*III 0 ruby postgresql activerecord greenplum
在 Ruby 中,我有一个测试,它是Postgres(实际上是 Greenplum)数据库中的子类ActiveSupport::TestCase并通过子类访问表。ActiveRecord对于特定的测试,我需要在表中填充大约一百万行,但我并不真正关心其中有什么。我可以做类似的事情
for i in 1...1000000 do
MyTable.create(:column1 => 'value', :column2 => 'value')
end
Run Code Online (Sandbox Code Playgroud)
但这需要很长时间才能运行。我可以通过将其包装在事务中来使其更快一点,这样就create不会每次都创建一个新事务,但这只会节省很多时间。
有没有一些好的方法可以做到这一点,这样我就不必在表中执行大量的虚假值插入?
(注意:尝试假装该表包含一百万条记录的存根是行不通的,因为我稍后需要与实际行进行交互;对于这个特定的测试,我只是不关心它们是什么)
在一个简单的查询中运行所有这些,例如:
INSERT INTO mytable (col1, col2)
SELECT 'value1', 'value2'
FROM generate_series(1,1000000);
Run Code Online (Sandbox Code Playgroud)
这应该很快就会填充数据库。我的笔记本电脑需要 2 秒。
| 归档时间: |
|
| 查看次数: |
953 次 |
| 最近记录: |