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

Requêtes PostgreSQL Discussion :

Transfert d'une base à l'autre en remplaçant les données existantes


Sujet :

Requêtes PostgreSQL

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Transfert d'une base à l'autre en remplaçant les données existantes
    Bonjour,
    J'ai réalisé un script qui réalise une sauvegarde ma base A (pg_dump) dans un fichier sql puis qui la restaure dans ma base B (pg_restore). Néanmoins, dans ce cadre-là, si les données existent déjà dans la base B, il ne fait pas la copie des éléments inclut dans la base A. Or, j'aimerais que si la table existe déjà dans la base B, il la remplace, et que si elle n'existe pas, il l'ajoute.
    Avez-vous une idée sur la manière de procéder?
    Merci

  2. #2
    Futur Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'ai testé via PGAdmin. Si je coche l'option "nettoyer avant la restauration", apparemment ça permet d'écraser ma donnée si elle existe déjà. Il faudrait que je trouve la commande via pg_restore mais je crois que cela correspond à :
    --if-exists, à utiliser avec --clean. Je testerais demain.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Je lance deux requêtes en ligne de commande :
    -pg_dump -d dbname -h adresseIP -p port -U user -w -o -E utf-8 -Ft > "C:/.../fichier.tar"
    -pg_restore -h adresseIP -p port -U user -w -d dbname -c --if-exists "C:/.../fichier.tar"

    Mon pg_restore me permet bien de supprimer les tables de la base B si elles existent aussi dans mon fichier .tar et de les remplacer par celles de la base A.
    Mais il faut pour cela que j'ai les mêmes schémas dans ma base A et ma base B. Or ce n'est pas le cas. Je voudrais contourner le schéma.

    Est-ce possible?

    Merci

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 014
    Points : 23 702
    Points
    23 702
    Par défaut
    Bonjour,

    Non, ça n'est pas possible via l'utilisation directe de pg_dump et pg_restore...
    Vous pouvez éventuellement utiliser pg_restore pour générer un script SQL, et ensuite modifier (d'une façon ou d'une autre) ce script pour changer le nom de schéma... Mais attention à l'impact de cette modification sur le contenu de vos données.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je vous remercie pour votre réponse. En effet, ça a l'air d'être la méthode la plus simple. Je l'ai testé à travers un script et cela fonctionne même sur des fichiers sql très lourds.

    Du coup je me demande si il est possible de faire en sorte que dès qu'une couche soit créée dans un schéma, ou qu'une des couches du schéma soit mises à jour, le pg_dump puisse se lancer, puis que mon script python se lance? Je suppose qu'il faudrait coupler un trigger et un script python? Mais je ne connais pas du tout trigger, et je ne sais pas si il peut faire en sorte que mon script s'exécute. Pouvez-vous m'aiguiller là-dessus?

    Merci

Discussions similaires

  1. Partager une base de donnee en fusionnant les données
    Par ensascience dans le forum Access
    Réponses: 0
    Dernier message: 27/10/2015, 12h44
  2. [AC-2003] Transfert d'une base à une autre
    Par mmarino dans le forum Access
    Réponses: 2
    Dernier message: 23/10/2010, 18h20
  3. transfert d'une base d'un PC vers un autre
    Par troumad dans le forum Installation
    Réponses: 7
    Dernier message: 22/01/2007, 14h11
  4. [debutant] transfert d'une base vers un autre serveur
    Par Fris@u dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/03/2006, 15h15
  5. [MySQL] Transfert d'une base à une autre
    Par Lypertrophie dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 27/12/2005, 17h06

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