AWS 数据管道 - 如何使用它进行增量 RDS 数据更新?
AWS Data pipeline - how to use it for incremental RDS data updates?
我有一种情况,我正在使用数据管道从存储在 S3 中的 csv 文件导入数据。对于初始数据加载,数据管道执行良好。
现在我需要使这个数据库保持最新并同步到内部部署数据库。这意味着将有一组 CSV 文件进入 S3,这将是对某些现有记录的更新、新记录或删除。我需要通过数据管道在 RDS 上更新它。
问题 - 数据管道可以设计用于此目的还是仅用于一次性数据加载?如果它可以用于增量更新,那我该怎么做。
非常感谢任何帮助!
Mysql RDS增量上传有一个预定义的模板,我个人尝试过从mysql、sql服务器和redshift进行增量上传。
您可以从使用 mysql 模板开始,然后在架构师视图中对其进行编辑,以深入了解它使用的 new/additional 字段,同样也可以为其他 RDS 数据库创建数据管道。
在内部,增量要求您提供更改列,它本质上是一个日期列,并且这个更改列是在 Sql 脚本中使用的,例如:
select * 来自#{table},其中#{myRDSTableLastModifiedCol} >= '#{format(@scheduledStartTime, 'YYYY-MM-dd HH-mm-ss')}' and #{myRDSTableLastModifiedCol} <= '#{format(@scheduledEndTime, 'YYYY-MM-dd HH-mm-ss')}'
scheduledStartTime 和 scheduleEndTime 是数据管道表达式,其值取决于您的日程安排。
http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-pipeline-expressions.html
而scheduletype是timeseries,在schedule结束时间结束时执行sql,保证没有数据丢失。
是的,删除的数据无法通过数据管道进行跟踪;如果日期时间列不在您的 table 中,数据管道也无济于事,在这种情况下,我希望加载完整 table.
我希望我已经涵盖了很多我知道的:)
此致,
瓦伦 R
是的,您需要执行更新和插入(也称为更新插入)。
如果您有一个 table,键为:key_a、key_b 和其他列:col_c、col_d,您可以使用以下 SQL:
insert into TABLENAME (key_a, key_b, col_c, col_d) values (?,?,?,?) ON DUPLICATE KEY UPDATE col_c=values(col_c), col_d=values(col_d)
我有一种情况,我正在使用数据管道从存储在 S3 中的 csv 文件导入数据。对于初始数据加载,数据管道执行良好。
现在我需要使这个数据库保持最新并同步到内部部署数据库。这意味着将有一组 CSV 文件进入 S3,这将是对某些现有记录的更新、新记录或删除。我需要通过数据管道在 RDS 上更新它。
问题 - 数据管道可以设计用于此目的还是仅用于一次性数据加载?如果它可以用于增量更新,那我该怎么做。
非常感谢任何帮助!
Mysql RDS增量上传有一个预定义的模板,我个人尝试过从mysql、sql服务器和redshift进行增量上传。 您可以从使用 mysql 模板开始,然后在架构师视图中对其进行编辑,以深入了解它使用的 new/additional 字段,同样也可以为其他 RDS 数据库创建数据管道。
在内部,增量要求您提供更改列,它本质上是一个日期列,并且这个更改列是在 Sql 脚本中使用的,例如:
select * 来自#{table},其中#{myRDSTableLastModifiedCol} >= '#{format(@scheduledStartTime, 'YYYY-MM-dd HH-mm-ss')}' and #{myRDSTableLastModifiedCol} <= '#{format(@scheduledEndTime, 'YYYY-MM-dd HH-mm-ss')}'
scheduledStartTime 和 scheduleEndTime 是数据管道表达式,其值取决于您的日程安排。 http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-pipeline-expressions.html
而scheduletype是timeseries,在schedule结束时间结束时执行sql,保证没有数据丢失。
是的,删除的数据无法通过数据管道进行跟踪;如果日期时间列不在您的 table 中,数据管道也无济于事,在这种情况下,我希望加载完整 table.
我希望我已经涵盖了很多我知道的:)
此致, 瓦伦 R
是的,您需要执行更新和插入(也称为更新插入)。
如果您有一个 table,键为:key_a、key_b 和其他列:col_c、col_d,您可以使用以下 SQL:
insert into TABLENAME (key_a, key_b, col_c, col_d) values (?,?,?,?) ON DUPLICATE KEY UPDATE col_c=values(col_c), col_d=values(col_d)