Sql 仅向红移表中添加新的或修改的数据

Sql 仅向红移表中添加新的或修改的数据,sql,database,amazon-web-services,amazon-redshift,Sql,Database,Amazon Web Services,Amazon Redshift,每个月我都会收到一份带有数据的tsv。我需要一个表来反映这个tsv中的数据。此表中的每一行都有添加日期。tsv可能与上月的tsv完全相同,在这种情况下,表中的任何数据都不会更改。数据也可能有一个上个月的修改行,在这种情况下,我们需要更新该行,并用todays date更改date列。最后,我们可能会有新的数据,在这种情况下,将这些新数据添加到带有todays date的表中。想知道最简单的方法是什么。目前已经有python使用COPY命令将tsv文件写入redshift,但需要使用正确的sql命

每个月我都会收到一份带有数据的tsv。我需要一个表来反映这个tsv中的数据。此表中的每一行都有添加日期。tsv可能与上月的tsv完全相同,在这种情况下,表中的任何数据都不会更改。数据也可能有一个上个月的修改行,在这种情况下,我们需要更新该行,并用todays date更改date列。最后,我们可能会有新的数据,在这种情况下,将这些新数据添加到带有todays date的表中。想知道最简单的方法是什么。目前已经有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

根据上给出的建议,典型流程为:

  • 将数据加载到临时暂存表中
  • 删除需要替换的行(
    使用stage从目标中删除,其中target.primarykey=stage.primarykey
  • 跨(
    插入目标SELECT*FROM stage
    )复制数据

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

除了TSV文件中的数据外,表中还有其他数据吗?如果没有,为什么不简单地用TSV文件的内容替换整个表呢?您是否尝试过:我想尝试并维护添加/修改数据的日期