仅向红移表添加新的或修改的数据
Posted
技术标签:
【中文标题】仅向红移表添加新的或修改的数据【英文标题】:Adding only new or modified data to a redshift table 【发布时间】:2020-09-27 19:16:38 【问题描述】:每个月我都会收到一个带有数据的 tsv。我需要一个反映此 tsv 中数据的表。此表中的每一行都有添加日期。 tsv 可能与上个月的 tsv 完全相同,在这种情况下,表中的任何数据都不会更改。数据也可能有上个月的修改行,在这种情况下,我们需要更新该行并将日期列更改为今天的日期。或者最后,我们可能只有新数据,在这种情况下,将这些新数据添加到带有今天日期的表中。想知道最简单的方法是什么。目前已经有 python 使用 COPY 命令将 tsv 文件写入 redshift 但需要帮助以正确的 sql 命令来更新表。
例子:
当前表:
9/1/2020 Mike 3
9/1/2020 Jake 4
新的 tsv 文件:
10/1/2020 Mike 5
10/1/2020 Kevin 4
我们添加新的 tsv 数据后的表格:
9/1/2020 Jake 4
10/1/2020 Mike 5
10/1/2020 Kevin 4
【问题讨论】:
除了 TSV 文件中的内容之外,表中是否还有其他数据?如果没有,为什么不简单地将整个表格替换为 TSV 文件的内容? 你试过了吗:Updating and inserting new data - Amazon Redshift 我想尝试维护添加/修改数据的日期 【参考方案1】:根据Performing a merge operation by replacing existing rows - Amazon Redshift给出的建议,一个典型的流程是:
将数据加载到临时临时表中 删除需要替换的行 (DELETE FROM target USING stage WHERE target.primarykey = stage.primarykey
)
跨 (INSERT INTO target SELECT * FROM stage
) 复制数据
您需要稍微修改该过程以在这些新行中插入今天的日期。
【讨论】:
以上是关于仅向红移表添加新的或修改的数据的主要内容,如果未能解决你的问题,请参考以下文章