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?
Version imprimable
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: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:ALTER SCHEMA mon_schema RENAME mon_nouveau_nom
A +
merci, je crois que je vais être prudent
Salut
C'est bien possible de changer de schema...
Vous pouvez utiliser ce code pour boucler sur les tablesCode:
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:
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$$;
@+