pg_dump:命令行参数太多

问题描述 投票:0回答:9

这个命令有什么问题:

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

这是命令行参数过多的错误

postgresql dump database-backups pg-dump
9个回答
47
投票

看起来像它的 -W 选项。该选项没有任何价值。

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

如果您想在不键入密码的情况下运行命令,请使用 .pgpass 文件。 http://www.postgresql.org/docs/9.1/static/libpq-pgpass.html


25
投票

为了后代,请注意 pg_dump 和 pg_restore(以及许多其他命令)无法处理文字处理器创建的长连字符。如果您从文字处理器中剪切粘贴命令行,请确保它没有将您的连字符转换为编辑中的其他内容。否则你会得到看起来正确但无可救药地混淆了这些工具中的参数解析器的命令行。


20
投票

pg_dump 和 pg_restore 需要在命令行上询问密码,如果你把它放在命令中,它们总是给出“太多的命令行参数”错误。您可以在命令行或批处理文件中使用以下设置相关环境变量:

"SET PGPASSWORD=<password>"

这样就不会要求您在批处理文件中手动输入密码。他们使用给定的环境变量。


10
投票

不是使用

-W
标志传递密码,而是从为 postgres 设置临时变量开始:

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

5
投票

-W
-> 将提示输入密码 进行完整的数据库转储 使用像

这样的东西
pg_dump -h 192.168.44.200 -p 5432 -U postgres -W -c -C -Fc -f C:\MMM\backup10_3.backup DATABASE_NAME

5
投票

我从复制粘贴中得到这个,其中 1 个破折号不同。

是:

–-host=
(第一个破折号是“长”破折号) 更正为
--host=
解决了


3
投票

另外,如果你不想要密码提示,直接使用连接字符串。

pg_dump 'postgresql://<username>:<password>@localhost:5432/<dbname>'

所以,结合原题中的选项,

pg_dump 'postgresql://postgres:<password>@localhost:5432/postgres' --table='"employees"' --format='t' --file='D:\ddd.txt' --data-only --disable-triggers

遇到字母大小写问题时不要忘记使用引号

参考:


1
投票

另一种选择是添加

~/.pgpass
文件,内容如下:

hostname:port:database:username:password

阅读更多在这里


0
投票

2021-11-30,pg v12,windows 10

pg_dump -U postgres -W -F t postgres > C:\myfolder\pg.tar

-U "postgres"
作为用户名,

-W
提示输入psd,

-F t
表示格式为.tar,

> C:\myfolder\pg.tar
是目标路径和文件名

© www.soinside.com 2019 - 2024. All rights reserved.