IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration PostgreSQL Discussion :

Créer une nouvelle base comme sous-ensemble d'une BDD existante


Sujet :

Administration PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Créer une nouvelle base comme sous-ensemble d'une BDD existante
    Bonjour,
    J'utilise PostgreSQL pour l'exploitation des données cadastrales, après avoir passé les fichiers EDIGEO et MAJIC par la moulinette de l'extension CADASTRE dans QGIS.
    J'aimerais savoir si il est possible de créer une nouvelle BDD absolument identique à la première, mais sur un sous ensemble des données (par exemple, sélection de x parcelles => création d'une BDD avec les x parcelles et l'ensemble des données attachées à ces parcelles, y compris données propriétaires). Il faudrait bien entendu que l'ensemble des relations, des contraintes, des index, etc. soient maintenus.
    Merci par avance pour vos conseils.
    Jean

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Tu peux créer une copie identique d'une base.
    1. tu ferme toutes les connexions à la base
    2. à partir d'une connexion à la base postgres, tu exécute la commande
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      CREATE DATABASE copiebd
        TEMPLATE=bdorigine;

    Le reste tu peux le faire manuellement.
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bonjour Alassane, et merci pour ta réponse.
    Avec la méthode proposée, je me retrouve avec une BDD exactement de même structure mais vide de données. Ce que je voudrais, c'est une BDD de structure équivalente avec un sous ensemble des données pour toutes les tables, issues d'une sélection sur l'une des tables (dans mon cas, c'est du cadastre, je voudrais avoir une réplication de la base et des données uniquement pour une sélection de parcelles, ce qui évite de se trimbaler l'ensemble des données...).
    Merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    L'intérêt d'une base de données relationnelles est de n'avoir JAMAIS aucune redondance. Là vous demandez exactement le contraire ! Quel est votre but fonctionnel ? Car je pense que vous faites fausse route...
    • Si c'est pour des raisons de sécurité il existe les vues et les privilèges qui vont avec.
    • Si c'est pour des raisons de hautes disponibilité il existe des outils particuliers.


    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/ * * * * *

  5. #5
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Citation Envoyé par tijan Voir le message
    Avec la méthode proposée, je me retrouve avec une BDD exactement de même structure mais vide de données...
    Chez mois (PostgreSQL 9.6) c'est une copie exacte (structure et données).
    Citation Envoyé par tijan Voir le message
    Ce que je voudrais, c'est une BDD de structure équivalente avec un sous ensemble des données pour toutes les tables, issues d'une sélection sur l'une des tables (dans mon cas, c'est du cadastre, je voudrais avoir une réplication de la base et des données uniquement pour une sélection de parcelles...
    Dans ce cas, tu peux voir avec le décodage logique (pour PostgreSQL >=9.5)
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bonjour Alassane et Frédéric,
    Merci pour vos réponses.

    Alassane, merci pour ton conseil concernant le décodage logique, je vais essayer de comprendre, même si je ne suis pas sûr que cela correspond à ce que je cherche à faire ...

    Ce que je cherche à faire, c'est tout simplement une "extraction d'un sous ensemble de la base", parce que celle-ci m'est livrée sur un large territoire (il s'agit du Cadastre), et que seule une partie de ce territoire m'intéresse (je n'ai pas besoin de l'ensemble des données, qui alourdissent donc ma base et les manipulations).

    Je continue mes recherches...
    Merci

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ce que je cherche à faire, c'est tout simplement une "extraction d'un sous ensemble de la base", parce que celle-ci m'est livrée sur un large territoire (il s'agit du Cadastre), et que seule une partie de ce territoire m'intéresse (je n'ai pas besoin de l'ensemble des données, qui alourdissent donc ma base et les manipulations).
    Suggestion :
    Plutôt qu'une autre BDD, créez un nouveau schéma ayant la même structure que le premier puis importez les données d'un schéma à l'autre avec des requêtes du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO schema_reduit.table_1
    SELECT *
    FROM gros_schema.table_1
    WHERE -- condition de restriction des données à importer
    Attention !
    Procédez en commençant par les tables qui n'ont pas de clés étrangères.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Merci pour la suggestion.
    Il n'y a donc pas d'outil automatique*, et il faut faire l'extraction de façon manuelle, table par table ... ?

    * j'imaginais n'avoir à faire une requête que sur l'une des tables, en l’occurrence la table "parcelles", et que la sélection se ferait automatiquement en cascade sur les autres tables, en ne conservant que les enregistrements liés par des clés étrangères à la table "parcelles" ...

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    C'est la suppression qui peut se faire en cascade, à condition que la clause ON DELETE CASCADE soit spécifié sur les clés étrangères.

    Dans ce cas, effectivement, si vous n'avez pas besoin et n'aurez pas besoin dans le futur des données surnuméraires, vous pouvez tenter le coup du DELETE dans la table qui est référencée dans les autres mais vérifiez vos contraintes avant.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Créer une nouvelle base sur le modèle d'une autre
    Par Kevin25 dans le forum Débuter
    Réponses: 2
    Dernier message: 01/08/2012, 10h54
  2. Réponses: 8
    Dernier message: 24/02/2009, 16h41
  3. Réponses: 2
    Dernier message: 01/02/2008, 16h00
  4. Créer une nouvelle base de données sur Oracle10g
    Par mariam2001 dans le forum Administration
    Réponses: 6
    Dernier message: 11/05/2007, 15h25
  5. Réponses: 1
    Dernier message: 22/11/2006, 20h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo