Sql 仅向红移表中添加新的或修改的数据
每个月我都会收到一份带有数据的tsv。我需要一个表来反映这个tsv中的数据。此表中的每一行都有添加日期。tsv可能与上月的tsv完全相同,在这种情况下,表中的任何数据都不会更改。数据也可能有一个上个月的修改行,在这种情况下,我们需要更新该行,并用todays date更改date列。最后,我们可能会有新的数据,在这种情况下,将这些新数据添加到带有todays date的表中。想知道最简单的方法是什么。目前已经有python使用COPY命令将tsv文件写入redshift,但需要使用正确的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命
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文件的内容替换整个表呢?您是否尝试过:我想尝试并维护添加/修改数据的日期