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 02/06/2021 20:11:21

pg_dump avec exclusion de table

Salut
J'utilise la commande suivante...

"chemin\pg_dump.exe" --host localhost --port xxxx --username "monuser"   -T '*.t*' --format plain --schema-only --encoding UTF8 --file "cheminsave\schema_monschema.sql" --schema "monschema" "mabase"

pour exporter le DDL de ma base (par schéma) en excluant les tables dont les noms commencent par t.
J'utilise pour cela l'option -T '*.t*' ou --exclude-table='*.t*'
Mais j’obtiens toujours le DDL des tables en question.
Qu'ai-je donc raté?
@+

Hors ligne

#2 02/06/2021 20:20:11

rjuju
Administrateur

Re : pg_dump avec exclusion de table

$ pg_dump -s | ag t1
-- Name: t1; Type: TABLE; Schema: ns1; Owner: rjuju
CREATE TABLE ns1.t1 (
ALTER TABLE ns1.t1 OWNER TO rjuju;
-- Name: t1; Type: TABLE; Schema: public; Owner: rjuju
CREATE TABLE public.t1 (
ALTER TABLE public.t1 OWNER TO rjuju;


$ pg_dump -s -T "*.t*" | ag t1 | wc -l
0

Aucune idée de pourquoi cela ne marche pas pour vous.  J'imagine que windows interprète différemment la ligne de commande.  Essayez de chercher de ce côté là.

Hors ligne

#3 02/06/2021 21:05:10

Re : pg_dump avec exclusion de table

Merci
Votre réponse m'a mis sur le chemin.
Le problème c'est qu'il faut double quotes au lieu de simple. Mais la documentation emplois le simple quote.
-T '*.t*'
@+

Hors ligne

#4 03/06/2021 05:40:22

rjuju
Administrateur

Re : pg_dump avec exclusion de table

La documentation montre une utilisation sous GNU/Linux.  Je ne pense pas que changer la documentation pour utiliser des guillemets doubles plutôt que simple soit une bonne idée, car la norme,  à ma connaissance, est :


- guillemet simple : le contenu est utilisé tel quel
- guillemet double : le contenu est "interprété" (variable résolue etc etc)


Et donc utiliser par exemple un $ (ou % sur window je crois) avec des guillemets doubles n'aurait pas le comportement attendu.


Le problème ici est que windows fait apparemment l'inverse, ou autre peut être chose.  Bref, le problème ne vient pas de pg_dump ni de postgres ni de la documentation mais de windows.  Malheureusement, lorsqu'il s'agit d'utilitaires en lignes de commandes les utilisateurs sont censé connaître le fonctionnement de leur shell / OS.

Hors ligne

#5 03/06/2021 14:20:35

Re : pg_dump avec exclusion de table

rjuju a écrit :

La documentation montre une utilisation sous GNU/Linux.  Je ne pense pas que changer la documentation pour utiliser des guillemets doubles plutôt que simple soit une bonne idée, car la norme,  à ma connaissance, est :


- guillemet simple : le contenu est utilisé tel quel
- guillemet double : le contenu est "interprété" (variable résolue etc etc)


Et donc utiliser par exemple un $ (ou % sur window je crois) avec des guillemets doubles n'aurait pas le comportement attendu.


Le problème ici est que windows fait apparemment l'inverse, ou autre peut être chose.  Bref, le problème ne vient pas de pg_dump ni de postgres ni de la documentation mais de windows.  Malheureusement, lorsqu'il s'agit d'utilitaires en lignes de commandes les utilisateurs sont censé connaître le fonctionnement de leur shell / OS.

Merci c'est noté

Hors ligne

#6 03/06/2021 16:23:23

jmarsac
Membre

Re : pg_dump avec exclusion de table

Bonjour,

Si votre version de windows le permet vous pouvez  lancer la commande dans une console PowerShell qui est plus conforme au standard, voici une requête que j'ai testée :

c:\prg\pg13\bin\pg_dump.exe --host 192.168.x.x --port 5432 --username toto   -T '*.t*' --format plain --schema-only --encoding UTF8 --file .\test.sql --schema monschema mabase

Le fichier test.sql contient les tables et vues du schema monschema sauf celles dont le nom commence par un 't'.

Hors ligne

#7 03/06/2021 18:27:20

Re : pg_dump avec exclusion de table

Merci jmarsac
ça marche très bien avec PowerShell
@+

Hors ligne

Pied de page des forums