MErci
]]>Avant import :
For each NomDeTable in Liste_des_tables_de_ma_base_de_données
ALTER TABLE NomDeTable DISABLE TRIGGER ALL
End Each
Après import :
For each NomDeTable in Liste_des_tables_de_ma_base_de_données
ALTER TABLE NomDeTable ENABLE TRIGGER ALL
End Each
Super.
(Mais pourquoi doubler les sautes de lignes blanches pour avec une ligne blanche ? Ca vient de chez moi ou quoi ?)
Par contre, pour détecter tous les triggers... je suppose qu'on peut parcourir certaines tables descriptives pour les trouver. Je proposerai cela à la personne qui m'a confié ce petit boulot.
Merci
]]>Bonjour gleu. Merci pour l'idée de désactiver temporairement les contraintes liées aux clés étrangères, c'est exactement ce que je cherche. Une idée de comment cela peut se faire ? Sinon je chercherai.
Sinon, repousser la vérification à la fin de la transaction est envisageable, si la transaction peut "encaisser" un import de toute la bdd qui est assez costaud. Pareil, si tu sais comment je suis partant, sinon je chercherai aussi.
Merci à tous. J'essaierai de faire un feedback.
Si on crée la table ci-dessus avec PostgreSQL, modulo l'oubli de S à personneS, et qu'on l'exporte avec pg_dump, il va éviter le problème d'intégrité référentielle en faisant ce découpage:
CREATE TABLE public.personnes (
code_personne text NOT NULL,
nom_personne text,
responsable text
);
...
COPY public.personnes (code_personne, nom_personne, responsable) FROM stdin;
... ici les contenus...
... ensuite seulement l'ajout des contraintes
ALTER TABLE ONLY public.personnes
ADD CONSTRAINT personnes_pkey PRIMARY KEY (code_personne);
ALTER TABLE ONLY public.personnes
ADD CONSTRAINT personnes_responsable_fkey FOREIGN KEY (responsable) REFERENCES public.personnes(code_personne);
.. pour finir les droits d'accès via GRANT
J'ai un transfert relativement simple à faire de Oracle vers Postgres. Quelques tables, la base cible existe déjà, elle a exactement la même structure donc, à vue de nez, pas trop de problèmes.
Par contre, je me pose des questions sur les clés étrangères. Que se passe-t-il si on importe des données qui contrarient les clés étrangères tant que tout n'est pas importé ?
Par exemple :
CREATE TABLE personnes (
code_personne text PRIMARY KEY,
nom_personne text,
responsable text REFERENCES personne (code_personne)
);
Cette table, en quelque sorte, pointe sur elle même. Selon l'ordre des données à importer, on peut avoir des soucis. En on peut même avoir des problèmes insolubles sir toto a pour responsable titi, et que titi a pour responsable toto (oui je sais, c'est capilotracté).
Une solution serait de suspendre les clés étrangères le temps de tout importer, puis de les réactiver ensuite. Mais est-ce possible ?
Que pouvez-vous me proposer ?
Attention, je suis un gros newbie. Je n'ai même jamais touché Postgres. J'ai cette étude à faire pour donner un coup de main à mon boss.
Merci d'avance