从mysql到Redshift

时间:2017-03-21 09:24:30

标签: amazon-redshift

我想将 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)应归档。

这可能吗?

1 个答案:

答案 0 :(得分:0)

您期待多少行?

一种方法是添加一个时间戳列,每当修改一条记录时,该列都会更新为当前时间。

然后使用外部进程执行复制运行,您可以从Redshift获取最大时间戳并从MySQL中选择任何大于该时间戳的记录,如果使用COPY方法加载到Redshift,将它们转储到S3。

要加载新记录并归档旧记录,您需要使用Redshift upsert pattern的变体。这将涉及加载到临时表,识别要归档的原始表中的记录,将这些记录移动到另一个归档表或将UNLOADing它们转移到S3归档,然后ALTER APPEND将新记录放入主表中表