Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2005, 17h46   #1
Membre actif
 
Inscription : juin 2003
Messages : 209
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 209
Points : 189
Points : 189
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+
Bouboubou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2005, 18h36   #2
Membre actif
 
Inscription : juin 2003
Messages : 209
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 209
Points : 189
Points : 189
Bon, je vois que vous insistez pour avoir un exemple

Code :
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 :
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+
Bouboubou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2005, 11h06   #3
Membre actif
 
Inscription : juin 2003
Messages : 209
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 209
Points : 189
Points : 189
Personne ne peut me proposer une solution? Mais comment faites-vous pour faire vos backup? Vous sauvez le schéma avec?
Bouboubou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2005, 14h05   #4
Futur Membre du Club
 
Inscription : juillet 2004
Messages : 13
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 13
Points : 15
Points : 15
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.
Jedei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2005, 15h30   #5
Membre actif
 
Inscription : juin 2003
Messages : 209
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 209
Points : 189
Points : 189
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+
Bouboubou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h52.


 
 
 
 
Partenaires

Hébergement Web