bonjour ,
j'ai toutes mes tables dans le schéma public ,est-il possible de créer un nouveau schéma et d'y importer toutes les tables?
bonjour ,
j'ai toutes mes tables dans le schéma public ,est-il possible de créer un nouveau schéma et d'y importer toutes les tables?
PostGreSQL ayant commis la même erreur qu'Oracle (en fait les développeurs du moteur PG ont décider de singer Oracle) il n'est pas possible de transférer certains objets d'un schma dans un autre comme c'est le cas de la commande :
Néanmoins, vous pouvez changer le nom d'un schéma en faisant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER SCHEMA mon_schema TRANSFER mon_objet;
Cela dit, si vous avez mis en place une sécurité via des privilèges cela risque d'être dangereux !
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER SCHEMA mon_schema RENAME mon_nouveau_nom
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Salut
C'est bien possible de changer de schema...
Vous pouvez utiliser ce code pour boucler sur les tables
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE ancien_schema.latable SET SCHEMA nouveau_cshema
Mais si c'est l'ensemble des objets, la solution de SQLpro est mieux!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 DO $$DECLARE r record; BEGIN FOR r IN select n.nspname , c.relname FROM pg_class c inner JOIN pg_namespace n ON n.oid = c.relnamespace inner join pg_authid a on c.relowner=a.oid WHERE c.relkind = 'r'::"char" and n.nspname='ancine_schema' LOOP begin EXECUTE 'ALTER TABLE ' || r.nspname || '.' || r.relname || 'SET SCHEMA nouveau_schema' ; exception when others then continue; end; END LOOP; END$$;
@+
Le monde est trop bien programmé pour être l’œuvre du hasard…
Mon produit pour la gestion d'école: www.logicoles.com
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager