web-dev-qa-db-fra.com

pg_dump: trop d'arguments en ligne de commande

quel est le problème avec cette commande:

pg_dump -U postgres -W admin --disable-triggers -a -t employees -f D:\ddd.txt postgres

Cela donne une erreur de trop d'arguments en ligne de commande

19
Bhargav Gor

On dirait que c'est l'option -W. Il n'y a aucune valeur pour aller avec cette option.

-W, --password           force password Prompt (should happen automatically)

Si vous souhaitez exécuter la commande sans taper de mot de passe, utilisez un fichier .pgpass. http://www.postgresql.org/docs/9.1/static/libpq-pgpass.html

23
Jim

Pour la postérité, notez que pg_dump et pg_restore (et de nombreuses autres commandes) ne peuvent pas traiter les traits d'union longs créés par les processeurs Word. Si vous effectuez un copier-coller de lignes de commande à partir d'un traitement de texte, assurez-vous qu'il n'a pas converti vos traits d'union en un autre outil d'édition. Sinon, vous obtiendrez des lignes de commande qui semblent correctes mais qui confondent désespérément les analyseurs syntaxiques d'arguments dans ces outils.

10
johnkaplantech

pg_dump et pg_restore doivent demander le mot de passe sur commanline. Si vous le mettez commande, ils donnent toujours l'erreur "trop ​​d'arguments de ligne de commande". Vous pouvez utiliser ci-dessous pour définir une variable d'environnement associée dans un fichier de commandes ou de commandes:

"SET PGPASSWORD=<password>"

afin que vous ne soyez pas invité à entrer le mot de passe manuellement dans votre fichier batch. Ils utilisent une variable d'environnement donnée.

3
Mustafa Kemal

Je l'ai obtenu en copiant-collant, où l'un des tirets était différent.

Était: –-Host= (le premier tiret i un tiret "long") Corrigé en --Host= l'a résolu

-W -> demandera un mot de passe pour prendre une copie complète de la base de données utiliser quelque chose comme:

pg_dump -h 192.168.44.200 -p 5432 -U postgres -W -c -C -Fc -f C:\MMM\backup10_3.backup DATABASE_NAME
1
Muthu

Au lieu de transmettre le mot de passe avec l'indicateur -W, commencez par définir une variable temporaire pour postgres:

PGPASSWORD="mypass" pg_dump -U postgres--disable-triggers -a -t employees -f D:\ddd.txt postgres
0
Bartosz

Une autre option consiste à ajouter un fichier ~/.pgpass avec un contenu comme celui-ci:

hostname:port:database:username:password

lire plus ici

0
Szymon Rut