[Postgresql] : changer des tables de schéma

Les imports de bases se passent plus ou moins comme l’on veut. Par exemple, si on restaure des datas dans une base différente ou si on créé la base morceau par morceau (structure, user…), vous pouvez vous retrouver avec les tables de votre applis situées dans le schéma « public ». Pas forcément ce que l’on recherche. Bien souvent on créé un schéma spécifique pour chaque application.

Comment réaffecter toutes les tables du schéma « public » dans un autre schéma ?

Pas très compliqué, pour une table :

ALTER TABLE public.nommatable SET SCHEMA monschema;


Pour une seule table pas de problème. Mais pour toutes les tables ?

DO
$$
DECLARE
	row record;
BEGIN
	FOR row IN SELECT tablename FROM pg_tables WHERE schemaname = 'public' -- and other conditions, if needed
	LOOP
		EXECUTE 'ALTER TABLE public.' || quote_ident(row.tablename) || ' SET SCHEMA monschema;';
	END LOOP;
END;
$$;
animal big elephant endangered
Photo by Anthony on Pexels.com

Cette fonction/procédure permet donc de lister toutes les tables puis de lancer une boucle sur celle-ci en faisant le ALTER TABLE SET SCHEMA.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s