我有多个数据源,用于每天更新同一个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中的所有内容。
更有效的方法是什么?
答案 0 :(得分:0)
通常你会:
CREATE UNLOGGED TABLE
获取新数据,然后COPY
进入;或然后
UPDATE
的一部分,在单个大型集合操作中设置标志和更新值。如果需要,您可以将其批处理为较小的块和/或并行化。如果FDW或批量导入外部数据不可行,那么您通常使用外部工作队列系统来完成。