Sql 迭代大型外部postgres db,操作行,将输出写入rails postgres db
我有一个postgres数据库,大约有200000000行和6列。这些列有int、date和string,但没有主键,也没有唯一的值作为主键的基础 这个数据库中的记录包含我的一个rails postgres模型所需的原始数据。我希望遍历完整的外部数据库,对其中的每一行执行计算,然后将输出写入rails模型 我在连接数据库或通过ActiveRecord访问记录方面没有任何问题,但我尝试在数据库上迭代的所有操作都失败了,或者耗时太长。我尝试了以下方法:Sql 迭代大型外部postgres db,操作行,将输出写入rails postgres db,sql,ruby-on-rails,database,postgresql,Sql,Ruby On Rails,Database,Postgresql,我有一个postgres数据库,大约有200000000行和6列。这些列有int、date和string,但没有主键,也没有唯一的值作为主键的基础 这个数据库中的记录包含我的一个rails postgres模型所需的原始数据。我希望遍历完整的外部数据库,对其中的每一行执行计算,然后将输出写入rails模型 我在连接数据库或通过ActiveRecord访问记录方面没有任何问题,但我尝试在数据库上迭代的所有操作都失败了,或者耗时太长。我尝试了以下方法: ExternalDB.all.each Ex
- ExternalDB.all.each
- ExternalDB.find_all.each
- 使用将“id”列添加到ExternalDB
并对其运行EXPLAIN
,以查看查询计划器是否计划使用该索引,然后运行它以查看其执行情况
如果它运行良好,那么您可以将其重新集成到Rails代码中,可能是通过原始SQL。您将需要使用游标,或者是协议级别的游标,或者是一级游标
轻松地;看
您可能还会发现这个问题提供了信息:
我还没有检查源代码/文档,看看Pg gem是否支持PostgreSQL的协议级游标进行批处理读取,但是如果已经有一个工具来实现这一点(如上链接),那么可能不值得探索。使用您提供的游标gem-非常好,谢谢!我认为这可能是我们扩大这项进口任务的最佳方法。现在,这可能比我们需要的多一点,不过我们还是投票赞成这一伟大的解释。谢谢我只投了200米的赞成票!里面有什么样的数据?