web-dev-qa-db-fra.com

Exclude Table pendant pg_restore

UPDATE: A été en mesure d'exclure les données de la table à l'aide de la commande pg_dump. Cela le rend encore plus rapide que d'essayer de ne pas charger les données, car vous n'avez pas à attendre que ces données soient déchargées.

--exclude-table-data=event_logs

(PostgreSQL) 9.4.4

Quelqu'un sait comment exclure une table en faisant un pg_restore? Je peux trouver comment le faire en faisant un pg_dump. Cependant, ce n'est pas moi qui fais le dump et je ne peux pas les exclure. 

Il y a 2 tables dans le dump qui sont vraiment grandes et prennent une éternité lorsque je fais une restauration, je veux donc les ignorer.

15
covard

pg_restore n'a pas de paramètre exclude table, mais un paramètre de table include.

-t table

--table = table

Restaurez la définition et/ou les données de la table nommée uniquement. Plusieurs tables peuvent être spécifiées avec plusieurs commutateurs -t. Cela peut être combiné avec l'option -n pour spécifier un schéma.

Si vous avez un grand nombre de tables, cela nécessite un peu de frappe, mais cela vous permet d'exclure des tables spécifiques en laissant simplement leurs noms en dehors de la liste.

5
e4c5

J'ai eu le même problème. Une longue liste de tables, et je veux exclure les données de certaines des tables. 

Ce que j'ai fait était le suivant:

Courir

pg_restore -l $pgdump_file > restore.pgdump.list

Ouvrez ce fichier restore.pgdump.list dans un éditeur et insérez un ; devant la ligne disant 

;2429; 0 27550 TABLE DATA public <table_to_explore> <database>

Après avoir enregistré le fichier en question, il peut maintenant être utilisé pour l’importation, où toutes les lignes commençant par ; sont ignorées.

pg_restore -L restore.pgdump.list | psql

Vous pouvez créer une ligne pour ajouter ; devant les lignes ayant un nom de table spécifique, si vous souhaitez ignorer complètement une table spécifique.

man pg_restore en parle également dans un exemple à la fin de la documentation.

37

ici la commande n'a pas fonctionné:

pg_restore -L restore.pgdump.list | psql

répondu par Jesper Grann Laursen!

Ici, cela a fonctionné en suivant la séquence suivante:

pg_restore -l $pgdump_file > restore.pgdump.list

;2429; 0 27550 TABLE DATA public <table_to_explore> <database>

pg_restore -v -L restore.pgdump.list -d dbname pgdump.file