在保留期限后自动化红移截断/删除数据

我有一个红移表,它存储了大量的数据。 每个周末我都会去手工使用Workbench TRUNCATE上周我不再需要的数据。 我手动必须运行

DELETE FROM tableName WHERE created_date BETWEEN timeStamp1 AND timeStamp2; 

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

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

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

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

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

顺便一提…

你的例子使用DELETE命令,它与TRUNCATE命令一样。

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

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