La problématique est simple :
Votre base de données comporte un schéma avec plusieurs tables, et pour une raison qui vous est propre vous souhaitez la dupliquer au sein de la même base.
Voici une solution simple :
Elle consiste tout d’abord à exporter le schéma concerné comme ceci :
pg_dump nom_base -n nom_schema -s -f nom_fichier.pgsql
Ou comme cela :
pg_dump nom_base -n nom_schema -f nom_fichier.pgsql
(La première commande exporte le schéma sans les données, tandis que la seconde exporte le schéma et son contenu.)
Ensuite, changer le nom du schéma dans le fichier obtenu :
sed -i s/nom_schema/nom_nouveau_schema/g nom_fichier.pgsql
Attention : Vérifiez quand même qu’il n’y a pas dans votre base des données comportant la chaîne de caractère « nom_schema », auquel cas il faudra être un peu plus subtile.
Enfin, réimporter le fichier :
spsql nom_base -f filename.pgsql
Bonjour,
Y a-t-il une possibilité de dupliquer le schéma complet, et de n’y transférer qu’un sous ensemble des données, tout en gardant strictement la structure et les relations ? (Par exemple, l’ensemble des données pour une seule commune)
Dans ce cas je dupliquerais le schéma et les données, et ensuite j’enlèverais les données inutiles avec des requêtes du genre :
DELETE FROM latablemachintruc WHERE idCommune <> 25042;
(On vire tout ce qui se trouve dans la table, sauf les données correspondant à la commune ayant pour identifiant 25042.)
C’est sûr que ça n’est pas très rapide si ça concerne des bases de données énormes. Mais je n’ai pas d’autre idée, comme ça, spontanément. Je connais assez peu PostgreSQL.