Re: Déplacement massif de tous les éléments vers un autre schema ?

From: Romain MAZIÈRE <romain(dot)maziere(at)sigmaz-consilium(dot)fr>
To: celati Laurent <laurent(dot)celati(at)gmail(dot)com>, pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>, pgsql-fr-generale-owner(at)lists(dot)postgresql(dot)org
Subject: Re: Déplacement massif de tous les éléments vers un autre schema ?
Date: 2023-02-28 16:16:56
Message-ID: 1392de5a-b50c-ccf9-8168-d029ce391032@sigmaz-consilium.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour,

Il y a plus simple.

Vous pouvez vous inspirer de cette commande, qui va générer autant de
commandes SQL ALTER TABLE que de tables 'table%' dans le schéma 'yyy'

SELECT 'ALTER TABLE ' || schemaname || '.' || relname || 'SET SCHEMA
xxx;' FROM pg_stat_user_tables WHERE schemaname = 'yyy' AND relname LIKE
'table%';

Il faut ensuite utiliser la méta-commande :

\gexec

qui va exécuter l'ensemble des commandes SQL retournées.

"Sends the current query buffer to the server, then treats each column
of each row of the query's output (if any) as an SQL statement to be
executed."

C'est simple et efficace.

Cordialement

Romain MAZIÈRE
SIGMAZ Consilium

Le 28/02/2023 à 15:31, celati Laurent a écrit :
> 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...
>
> 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.

Attachment Content-Type Size
OpenPGP_0x97C05C89DEC4129F.asc application/pgp-keys 3.1 KB

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Sébastien Lardière 2023-03-01 17:31:20 Re: Déplacement massif de tous les éléments vers un autre schema ?
Previous Message Guillaume Lelarge 2023-02-28 15:08:11 Re: Déplacement massif de tous les éléments vers un autre schema ?