2017-09-24 46 views
1

我有一个红移表,它存储了大量数据。每个周末我都会去上周手动使用Workbench TRUNCATE来处理不再需要的数据。 我必须手动运行保留期后自动化红移截断/删除数据

DELETE FROM tableName WHERE created_date BETWEEN timeStamp1 AND timeStamp2; 

是否有可能有一些方法来告诉表或有一些过期的政策,消除每个星期天的数据给我吗?
如果没有,是否有办法每7天自动执行一次删除过程?在nodeJS中执行此操作的某种shell脚本或cron作业。

回答

3

不,有没有内置的能力在Amazon Redshift上定期运行命令。但是,您可以在连接到Redshift的另一个系统上运行脚本并运行该命令。

例如,一个cron作业调用psql连接到Redshift并执行该命令。这可以通过单行脚本完成。

或者,您可以配置一个AWS Lambda函数以连接到Redshift并执行该命令。 (您需要自己编写函数,但有些库可以使这更容易)。然后,您可以配置Amazon CloudWatch Events以按期望的计划(例如,每周一次)触发Lambda函数。

一个常见的策略是在每个时间段(例如,一个月,但在你的情况下,它将是一个星期)在不同的表中存储数据实际上是。然后,定义一个组合了几个表的视图。要删除一周的数据,只需删除包含该周数据的表格,为本周的数据创建一个新表格,然后更新视图以指向新表格,而不是旧表格。

顺便说一句...

你的示例使用DELETE命令,这是不一样TRUNCATE命令。

TRUNCATE从表中删除所有数据。这是完全清空表格的有效方法。

DELETE适用于删除部分表格,但它只是将行标记为已删除。数据仍然占用磁盘空间。因此,建议您在删除大量数据后对表格进行VACUUM

+0

很好的回复。很好地解释了场景和可用选项。非常感谢。非常感激。 –