如何从外部源更新数据库

时间:2015-04-22 23:05:44

标签: ruby-on-rails database postgresql

我有多个数据源,用于每天更新同一个Postgres数据库。需要根据external_id字段插入或更新每一行,并且需要更新状态。

如何管理昨天的数据与今天的数据之间的差异?通常,如果记录位于外部数据文件中,则其状态应为active,但如果后续导入中不再存在该记录,则本地数据库中的记录应设置为{{1 }}

例如,昨天的文件将包含external_ids hidden,而今天的文件包含1,2,3,4,5。在今天更新后,只有记录1,3,4,5,6,7应具有1,3,4,5,6,7状态,而active应设置为2

我想你可以做hidden。但是,我需要更新一组成千上万的external_ids中的所有内容。

更有效的方法是什么?

1 个答案:

答案 0 :(得分:0)

通常你会:

  • CREATE UNLOGGED TABLE获取新数据,然后COPY进入;或
  • 创建一个外部数据包装器,将外部数据公开,就好像它是一个表

然后

  • 在本地和外部数据之间进行大型完全外连接,作为UPDATE的一部分,在单个大型集合操作中设置标志和更新值。如果需要,您可以将其批处理为较小的块和/或并行化。

如果FDW或批量导入外部数据不可行,那么您通常使用外部工作队列系统来完成。