PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » Restauration table par table et contraintes externes » 10/05/2023 17:40:26

c'est ce que j'essaie de faire justement dans le même transaction, je fais les set constraints puis j'essaie de deleter ma table avec drop table mais la commande ne passe pas ou bien vider son contenu avec truncate table (error:cannot truncate a table referenced in a foreign key constraint) ;

après mon begin, j'ai même essayé un ALTER TABLE ma_table_à_restaurer DISABLE TRIGGER ALL;
et là mon \i ma_table_à_restaurer me répond "ERROR:  duplicate key value violates unique constraint ...."
j'ai l'impression de tourner en rond ...

#2 Re : Général » Restauration table par table et contraintes externes » 10/05/2023 16:15:30

en fait je viens de refaire un test où j'ai çà :

BEGIN;
ALTER TABLE nom_table1 ALTER CONSTRAINT nom_contrainte1 DEFERRABLE;
SET CONSTRAINTS nom_contrainte1 DEFERRED;
ALTER TABLE nom_table2 ALTER CONSTRAINT nom_contrainte2 DEFERRABLE;
SET CONSTRAINTS nom_contrainte2 DEFERRED;
DROP ma_table_à_restaurer ;

et là erreur "ERROR:  cannot drop table ma_table_à_restaurer because other objects depend on it" et me suggère de faire un DROP CASCADE ....ce qui ne m'arrange pas du tout

Ici l'idée était de faire un drop de ma table avant de lancer une restauration dans la transaction en cours en faisant \i ma_table_à_restaurer.sql  (que j'ai extrait de mon dump)

car si je lance la restauration sans dropper j'ai ce message d"erreur ERROR:  relation "ma_table_à_restaurer" already exists ....

#3 Re : Général » Restauration table par table et contraintes externes » 10/05/2023 11:29:12

Bonjour,
Qu'entendez-vous par version personnalisés de pg_restore ?

#4 Re : Général » Restauration table par table et contraintes externes » 09/05/2023 17:06:39

Salut et merci pour la réponse.

c'est que j'ai fait mais les contraintes ne passent pas en "deferred".

#5 Général » Restauration table par table et contraintes externes » 09/05/2023 12:03:40

noob_postgres
Réponses : 8

Bonjour,

Je souhaite restaurer des tables spécifiques sans toucher aux autres tables et ne pas faire une restauration complète.
Or, sur ces tables, il y a des contraintes externes (clés étrangères).

J'essaie de procéder ainsi :

BEGIN;
ALTER TABLE nom_table1 ALTER CONSTRAINT nom_contrainte1 DEFERRABLE;
SET CONSTRAINTS nom_contrainte1 DEFERRED;
ALTER TABLE nom_table2 ALTER CONSTRAINT nom_contrainte2 DEFERRABLE;
SET CONSTRAINTS nom_contrainte2 DEFERRED;
COMMIT;

puis j'efface le contenu de ma table à restaurer :
DELETE FROM ma_table_à_restaurer;

puis j'essaie de faire en user postgres : pg_restore -v -p 5440 -d ma_base -t ma_table_à_restaurer --data-only  mondump.dump

mais j'ai toujours des erreurs de ce type ERROR: duplicate key value violates unique constraint "pk_nom_contrainte"

Mais ce ne doit pas être la bonne façon de procéder ....je tourne en boucle sur le sujet.

Quelq'un aurait-il une méthode qui fonctionne ?

Merci pour votre aide,

Pied de page des forums

Propulsé par FluxBB