Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Tout est dans le titre: est-il possible - comme avec Oracle - de faire un import en ligne de commande et de préciser que on ne veut importer qu'un seul type d'objets, comme les tables par exemple (toutes les tables, sans avoir a les citer précisemment)?
Merci!
@+
Hors ligne
pg_restore n'est pas mentionné, mais on va imaginer que c'est ça. L'idée est de:
1. faire une liste de ce qu'il y a dans l'archive avec pg_restore --list
2. traiter cette liste manuellement ou automatiquement pour ne garder que ce qui est utile
3. importer le résultat avec pg_restore --use-list
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Bonjour,
Merci pour la réponse rapide.
Oui, désolé, je suis effectivement sur un pg_restore.
Au début, je pensais passer par psql, mais il semble que le type de fichiers que l'on va recevoir ( des *.backup ) ne corresponds pas, si j'ai bien compris.
Donc, on va tester cette idée de --list, je ne connais pas du tout le contenu de ce genre de fichiers et j'espère juste que on va pouvoir automatiser ce genre de tâche, car cela serait pour un import quotidien.
Un peu dommage qu'il n'y ait pas de fonctionalité native pour choisir d'importer uniquement un type d'objet...
@+
Hors ligne
pg_dump peut produire 3 formats:
- plain (un script SQL): fait pour être rejoué tel quel avec psql.
- custom: a une table de contenu interne que pg_restore sait exploiter sélectivement.
- directory: le backup n'est pas un fichier mais une aborescence.
Les fichiers *.backup en question devraient en principe être produits avec le format custom pour être restaurables sélectivement.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Merci pour les explications.
Et est-ce que pg_dump peut créer un dump qui ne contienne que des tables?
Je n'ai pas la main la dessus, j'ai l'impression que l'on va me dire de faire avec ce que j'ai mais je pourrais toujours demander a ceux qui produisent cet export, si techniquement possible.
Hors ligne
Non ce n'est pas possible sans avoir à nommer les objets séparéments. Cela dit, seules les tables vont être volumineuses dans le fichier de sauvegarde et comme Daniel l'a indiqué les possibilté de filtre à la restauration (en supposant qu'il ne s'agisse pas d'un simple script sql mais une sauvegarde type custom ou directory) sont suffisante pour automatiser votre besoin. Exemple de contenu d'une table des matière (sans les commentaires) :
210; 1255 16732 FUNCTION public my_function(text) rjuju
209; 1259 18768 TABLE public t1 rjuju
3326; 0 18768 TABLE DATA public t1 rjuju
3187; 1259 18773 INDEX public t1_id_idx rjuju
Donc pour ne restaurer que les tables (DDL + contenu), il suffit de faire :
pg_restore --list fichier.backup | grep TABLE > tables_only.list
pg_restore --use-list tables_only.list -U user...
Vous pouvez également filtrer sur le DDL uniquement ou le contenu uniquement selon vos besoin.
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour rjuju,
Merci pour la confirmation, et la réponse avec un exemple
Cela semble plus simple que ce que j'imaginais.
Je vais essayer ça, et je reviens vous dire.
A plus tard
(et bon week-end tout le monde...)
Hors ligne
Pages : 1