97 votes

Copier une table (y compris les index) dans postgres

J'ai une table postgres. J'ai besoin de supprimer certaines données de cette table. J'allais créer une table temporaire, y copier les données, recréer les index et supprimer les lignes dont j'ai besoin. Je ne peux pas supprimer les données de la table originale, car celle-ci est la source des données. Dans un cas, j'ai besoin d'obtenir des résultats qui dépendent de la suppression de X, dans un autre cas, j'aurai besoin de supprimer Y. J'ai donc besoin que toutes les données originales soient toujours présentes et disponibles.

Cependant, il semble un peu idiot de recréer la table, de la copier à nouveau et de recréer les index. Existe-t-il un moyen de dire à Postgres "Je veux une copie séparée complète de cette table, y compris la structure, les données et les index" ?

Malheureusement, PostgreSQL ne dispose pas d'une fonction "CREATE TABLE COMME X INCLUANT LES INDEX".

1voto

Créez un nouveau tableau à l'aide d'une sélection pour obtenir les données souhaitées. Remplacez ensuite l'ancien tableau par le nouveau.

create table mynewone as select * from myoldone where ...
mess (re-create) with indexes after the table swap.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X