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

PostgreSQL Discussion :

pg_dump restitution des données


Sujet :

PostgreSQL

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut pg_dump restitution des données
    Bonjour,

    Je rencontre un certain nombre de problème avec pg_dump. Lorsque je souhaite dumper uniquement mes données (sans la structure de ma base) et qu'ensuite je souhaite restituer (avec la commande pg_restore ou psql) les données. Je ne peux pas le faire car les contraintes d'intégrité référentielle ne sont pas respectées.

    Pour être un peu plus clair mon pg_dump ne respecte pas l'ordre d'insertion des données... donc impossible de recharcher le script tel quel sans toucher mon fichier à la main ;(

    Quelqu'un connait une solution?

    Merci de votre aide et A+

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Bon, je vois que vous insistez pour avoir un exemple

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    create table voiture 
    (
      id integer not null, 
      nom varchar, 
      idPersonne integer, 
      constraint pk_voiture primary key(id)
    );
     
    create table personne 
    (
      id integer not null,
      nom varchar, 
      prenom varchar,
      adresse varchar, 
      constraint pk_personne primary key (id)
    );
     
    alter table voiture add constraint fk_idpersonne foreign key (idpersonne)
     references personne(id);
     
     
    insert into personne values (1,'Goerges','Matto','Quartier St-Martin 3');
     
    insert into voiture values (1,'Volvo',1);
     
    pg_dump -d -a bd > exemple.sql
     
    [serveur:~] psql -d bd -f exemple.sql
    SET
    SET
    psql:exemple.sql:14: ERROR:  insert or update on table "voiture" violates foreign 
    key constraint "fk_idpersonne"
    DETAIL:  Key (idpersonne)=(1) is not present in table "personne".
    INSERT 586275 1
    et le fichier exemple.sql
    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
    16
    17
    18
    19
    20
    21
    22
    --
    -- PostgreSQL database dump
    --
     
    SET SESSION AUTHORIZATION 'pgsql';
     
    SET search_path = public, pg_catalog;
     
    --
    -- Data for TOC entry 1 (OID 586253)
    -- Name: voiture; Type: TABLE DATA; Schema: public; Owner: pgsql
    --
     
    INSERT INTO voiture VALUES (1, 'Volvo', 1);
     
     
    --
    -- Data for TOC entry 2 (OID 586260)
    -- Name: personne; Type: TABLE DATA; Schema: public; Owner: pgsql
    --
     
    INSERT INTO personne VALUES (1, 'Goerges', 'Matto', 'Quartier St-Martin 3');
    Merci de votre aide... A+

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Personne ne peut me proposer une solution? Mais comment faites-vous pour faire vos backup? Vous sauvez le schéma avec?

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Bonjour,
    La solution consiste à utiliser une directive permettant de désactivers les triggers et les contraintes d'intégrité (la base s'appelle test).
    pg_dump --data-only --inserts --file=/home/postgres/test.tar --format=t --disable-triggers test
    Vider les tables
    pg_restore --data-only --dbname=test --disable-triggers /home/postgres/test.tar

    Concernant les restaurations il est souvent préférable d'utiliser pg_restore qui permet un choix relativement fin des options.

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Nickel c'est parfaitement ce qu'il me fallait. D'ailleurs je viens d'apprendre que les contraintes d'intégrités étaient représentées par des triggers. Je me demande si c'est comme cela dans tout les SGBD (Oracle, DB2,...)?

    Merci encore et A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/05/2015, 17h28
  2. Exporter seulement une partie des données avec pg_dump ?
    Par Philhz dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 31/07/2004, 09h50
  3. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  4. Structure des données en retour d'un DBExtract ?
    Par mikouts dans le forum XMLRAD
    Réponses: 4
    Dernier message: 24/01/2003, 15h15
  5. Réponses: 2
    Dernier message: 18/12/2002, 10h30

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