这个命令有什么问题:
pg_dump -U postgres -W admin --disable-triggers -a -t employees -f D:\ddd.txt postgres
这个错误提示是由于命令行参数过多导致的。
pg_dump -U postgres -W admin --disable-triggers -a -t employees -f D:\ddd.txt postgres
这个错误提示是由于命令行参数过多导致的。
看起来是-W选项。该选项后面没有值。
-W, --password force password prompt (should happen automatically)
如果你想在不输入密码的情况下运行命令,请使用.pgpass文件。 http://www.postgresql.org/docs/9.1/static/libpq-pgpass.html
为了后代的记录,需要注意的是,pg_dump和pg_restore(以及许多其它命令)不能处理文本编辑器创建的长破折号。如果你从文本编辑器中复制粘贴命令行,请确保在编辑过程中没有将破折号转换成其他字符。否则,你将得到看似正确但会无法被这些工具的参数解析器正确处理的命令行。
如果您在命令中放置密码,pg_dump和pg_restore需要在命令行上询问密码,否则它们始终会给出“太多命令行参数”错误。您可以使用以下内容设置相关的环境变量:
在命令行或批处理文件中使用以下内容:
"SET PGPASSWORD=<password>"
这样你就不需要在批处理文件中手动输入密码了,它们使用给定的环境变量。
不要使用-W
标志传递密码,而是应该先设置postgres的临时变量:
PGPASSWORD="mypass" pg_dump -U postgres--disable-triggers -a -t employees -f D:\ddd.txt postgres
我是通过复制粘贴得到这个问题的,其中一个破折号不同。
本来是:–-host=
(第一个破折号是“长”破折号)更正为--host=
后解决了它
-W
-> 将提示输入密码以进行完整的数据库转储。使用类似以下的内容:
pg_dump -h 192.168.44.200 -p 5432 -U postgres -W -c -C -Fc -f C:\MMM\backup10_3.backup DATABASE_NAME
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
当你遇到大小写问题时,不要忘记使用引号
参考:
2021年11月30日,pg v12,Windows 10
pg_dump -U postgres -W -F t postgres > C:\myfolder\pg.tar
-U "postgres"
作为用户名,
-W
表示提示输入密码,
-F t
表示格式为 .tar,
> C:\myfolder\pg.tar
是目标路径和文件名。
-W admin
,不仅仅是省略-W
。 - Daniel Vérité