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

From: Guillaume Lelarge <guillaume(at)lelarge(dot)info>
To: celati Laurent <laurent(dot)celati(at)gmail(dot)com>
Cc: 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 15:08:11
Message-ID: CAECtzeXXL8wi3TCwjfHAXLeTEJ6-jE+FPRRGDoi71RcK0UMg0w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Le mar. 28 févr. 2023 à 16:04, celati Laurent <laurent(dot)celati(at)gmail(dot)com> a
écrit :

> Si j'ai bien compris, selon vous, il n'y a pas moyen de déplacer tous les
> indexes et contraintes ? Peut être via ce moyen ? :
> https://wiki.postgresql.org/wiki/Clone_schema
>
>
Non. Quand vous déplacez une table d'un schéma vers un autre, vous déplacez
aussi tous les index et toutes les contraintes de cette table. Quant au
lien que vous donnez, il ne parle pas du tout des index et des contraintes
:)

> Le mar. 28 févr. 2023 à 15:53, Guillaume Lelarge <guillaume(at)lelarge(dot)info>
> a écrit :
>
>> Bonjour,
>>
>> Le mar. 28 févr. 2023 à 15:44, celati Laurent <laurent(dot)celati(at)gmail(dot)com>
>> 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...
>>>
>>>
>> Les index et les contraintes n'étant pas liés à un schéma, la question ne
>> se pose pas :) De ce fait, il n'existe pas de ALTER INDEX SET SCHEMA.
>>
>>
>>> 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.
>>>
>>
>>
>> --
>> Guillaume.
>>
>

--
Guillaume.

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Romain MAZIÈRE 2023-02-28 16:16:56 Re: Déplacement massif de tous les éléments vers un autre schema ?
Previous Message celati Laurent 2023-02-28 15:04:20 Re: Déplacement massif de tous les éléments vers un autre schema ?