【发布时间】:2021-08-16 20:10:30
【问题描述】:
我有一个 RDS 数据库,它每天拍摄快照并保存在 S3 存储桶中。我每天将 RDS 快照数据从 S3 复制到 Amazon Redshift 数据库。我可以使用copy 来复制表格,但我不想复制整个表格,我只想复制自上次拍摄快照以来添加的行(增量复制)。
例如,在 RDS 中,有一个表名“user”,在 25-05-2021 时看起来像这样
id | username
1 | john
2 | cathy
当我在 2021 年 5 月 26 日第一次运行数据加载器时,它会将这两行复制到同名的 Redshift 表中。
现在 26-05-2021,RDS 中的表格如下所示:
id | username
1 | john
2 | cathy
3 | ola
4 | mike
当我将在 27-05-2021 运行数据加载器时,我不想复制所有三行,而是只想复制/获取新添加的行 (id = 3 and id = 4),因为我已经有了其他行.
进行这种增量加载的最佳方式应该是什么?
【问题讨论】:
-
在我考虑答案之前先问一个简单的问题:
VACUUM你在做什么? -
@MaxGanzII,你的意思是如果我用真空吸尘器 RDS 该怎么办?如果是,那不会改变 Redshift 中的任何内容,因为我对仓库有不同的 TTL 策略。
-
不,我指的是 Redshift 中的真空。您正在将记录加载到表中。除非您采取了特殊步骤,否则它们是未排序的。您需要对它们进行排序(或者使用 Redshift 毫无意义)。排序与加载密切相关,部分原因是集群上一次只能运行一个真空。要回答有关加载的问题,您还必须讨论真空。
标签: python-3.x amazon-web-services amazon-s3 pyspark amazon-redshift