我想将 mysql 中的数据加载到 redshift 。
此处我的数据值可随时更改。因此,我需要将旧记录和新记录捕获到Redshift中。
此处修改后的记录需要归档。只有新记录才能反映在Redshift中。
例如
MysqlTable:
ID NAME SAL
-- ---- -----
1 XYZ 10000
2 ABC 20000
首次加载到Redshift(这应该与Mysqltable相同)
ID NAME SAL
-- ---- ----
1 XYZ 10000
2 ABC 20000
第二次加载(我更改了员工的工资' XYZ'从10000到30000)
ID NAME SAL
-- ---- ----
1 XYZ 30000
2 ABC 20000
上表应反映在Redshift中,修改记录(1 XYZ 10000)应归档。
这可能吗?
答案 0 :(得分:0)
您期待多少行?
一种方法是添加一个时间戳列,每当修改一条记录时,该列都会更新为当前时间。
然后使用外部进程执行复制运行,您可以从Redshift获取最大时间戳并从MySQL中选择任何大于该时间戳的记录,如果使用COPY方法加载到Redshift,将它们转储到S3。
要加载新记录并归档旧记录,您需要使用Redshift upsert pattern的变体。这将涉及加载到临时表,识别要归档的原始表中的记录,将这些记录移动到另一个归档表或将UNLOADing它们转移到S3归档,然后ALTER APPEND将新记录放入主表中表