【问题标题】: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 文件的内容?
  • 我想尝试维护添加/修改数据的日期

标签: sql database amazon-web-services 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) 复制数据

您需要稍微修改该过程以在这些新行中插入今天的日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-02
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    相关资源
    最近更新 更多