Forum Programmation.SQL ordre de restauration des objets Postgresql

Posté par  .
Étiquettes : aucune
0
1
déc.
2008
Bonjour,

J'ai un souci pour restaurer avec pg_restore 8.3 : l'ordre des tables est tel qu'au bout d'un moment, ça se ramasse car des objets nécessaires n'existent pas encore.

Je pensais avoir trouvé la solution avec "-l" et "-L" (en éditant le fichier pour déplacer plus haut les tables incriminées) mais maintenant j'ai droit à cette erreur:

pg_restore: [programme d'archivage personnalisé] la sauvegarde d'un bloc de données spécifique du TOC dans le désordre n'est pas supporté sans identifiant sur ce flux d'entrée (fseek requis)

Avez vous déja utilisé cette méthode avec succès ?
  • # Tu as encore accès à la base source ?

    Posté par  . Évalué à 1.

    Si c'est oui, et je sais pertinement que je ne réponds pas directement à ta question, mais pour mes sauvegardes, je procède comme suit :
    $ pg_dump -D -s base > base.schema.sql
    pour sauvegarder le schéma de la base au format SQL puis
    $ pg_dump -D -a base > base.donnees.sql
    pour sauvegarder les données de la base au format SQL également.
    Ensuite, pour restaurer cette base, il suffit de faire :
    $ createdb base2
    $ psql base2 -f base.schema.sql
    $ psql base2 -f base.donnees.sql

    Je sais bien, ce n'est pas prévu pour ça, ou du moins, pg_restore est prévu pour fonctionner à peu près de la même façon que ce que je propose, mais bon, chacun ses habitudes.
    J'ai même un collègue qui fait ses sauvegardes en créant des bases de données à cet effet comme suit :
    $ createdb base_svg -t base
    ça créé une base nommée base_svg en utilisant base comme modèle. Pourquoi pas. Ça n'empêche pas d'utiliser ce que je dis au début de cette non réponse pour les sauvegardes.
    Voilà, en espérant que si du moins ça n'explique pas tes problèmes, ça te donne d'autres idées pour la suite.
    • [^] # Re: Tu as encore accès à la base source ?

      Posté par  . Évalué à 1.

      Moi c'est au niveau des données que ça coince...

      Si par exemple, pg_restore lit une sauvegarde dans l'ordre table_facture puis table_client, ça ne va pas marcher... A priori chez toi non plus !

      Ce qui est dommage c'est que les contraintes de type "check" ne sont pas flaggables en "deferrable", contrairement au foreign keys cf doc pg ici:
      http://www.postgresql.org/docs/8.3/interactive/sql-createtab(...)

      Et le changement d'ordre du fichier liste du dump ne marche pas :-((

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.