Non, il n'existe aucune capacité intégrée permettant d'exécuter régulièrement des commandes sur Amazon Redshift . Vous pouvez cependant exécuter un script sur un autre système qui se connecte à Redshift et exécute la commande.
Par exemple, un travail cron
appelant psql
pour se connecter à Redshift et exécuter la commande. Cela pourrait être fait dans un script d'une ligne.
Vous pouvez également configurer une fonction AWS Lambda pour vous connecter à Redshift et exécuter la commande. (Vous devez écrire la fonction vous-même, mais il existe des bibliothèques qui facilitent cela.) Ensuite, vous devez configurer Amazon CloudWatch Events pour déclencher la fonction Lambda selon le calendrier souhaité (par exemple, une fois par semaine).
Une stratégie commune consiste à stocker les données dans des tables séparées par période de temps (par exemple un mois, mais dans votre cas ce serait une semaine). Ensuite, définissez un affichage qui combine plusieurs tables. Pour supprimer une semaine de données, supprimez simplement la table qui contient cette semaine de données, créez une nouvelle table pour les données de cette semaine, puis mettez à jour la vue pour qu'elle pointe vers la nouvelle table mais pas vers l'ancienne.
Soit dit en passant ...
Votre exemple utilise la commande DELETE
, qui est pas la même chose que la commande TRUNCATE
.
TRUNCATE
supprime toutes les données d'une table. C'est un moyen efficace de vider complètement une table.
DELETE
est bon pour supprimer une partie d'une table mais elle marque simplement les lignes comme effacées. Les données occupent toujours l'espace sur le disque. Par conséquent, il est recommandé que vous VACUUM
le tableau après la suppression d'une quantité importante de données.
Grande réponse. Explique très bien le scénario et les options disponibles. Merci beaucoup. Très appréciée. –