Pages: 1
- Sujet précédent - Postgresql : Déplacer tous les éléments vers 1 nouveau schéma - Sujet suivant
#1 Tue 28 February 2023 15:29
- image95
- Participant assidu
- Date d'inscription: 6 Sep 2014
- Messages: 249
Postgresql : Déplacer tous les éléments vers 1 nouveau schéma
Bonjour,
Je souhaite trouver un moyen de déplacer 100 tables d'un schema 'A' vers un schema 'B'. Non seulement les données. Mais également les index, les clef primaires, contraintes (en quelque sorte INCLUDING ALL). Sauf erreur de ma part, ce bout de code permettrait de déplacer les données en tant que tel. Mais comment faire pour déplacer également les index, contraintes, clef primaire...
Code:
DO $$ DECLARE row record; BEGIN FOR row IN SELECT tablename FROM pg_tables WHERE schemaname = 'A' -- and other conditions, if needed LOOP EXECUTE format('ALTER TABLE A.%I SET SCHEMA [b];', row.tablename); END LOOP; END; $$;
Merci.
Hors ligne
#2 Sun 23 April 2023 19:50
- JLH
- Participant actif
- Date d'inscription: 7 Dec 2019
- Messages: 69
Re: Postgresql : Déplacer tous les éléments vers 1 nouveau schéma
Bonjour,
Le plus simple serait d'utiliser psql.
En executant :
psql: "CREATE SCHEMA nouveau_schema -- le nom du nouveau schéma
AUTHORIZATION mon_utilisateur -- le nom du futur proprietaire
LIKE ancien_schema;" -- le nom de votre ancien schéma.
Cela copira non seulement les données, mais aussi les index et les contraintes ( sauf les clés étrangères).
Si vous souhaitez faire quand même avec votre code :
Dans votre exemple, la première requête sélectionne une table : "SELECT tablename..." puis la copie, le tout dans une boucle.
Vous pouvez effectuer la même logique sur les index's, les clés primaires etc...
En commençant par les tables bien-sûr.
En espérant que ça aide.
Dernière modification par Jean HUMBERT (Sun 23 April 2023 19:52)
Hors ligne
Pages: 1
- Sujet précédent - Postgresql : Déplacer tous les éléments vers 1 nouveau schéma - Sujet suivant