我使用PuTTy连接远程Ubuntu。我想将一个表从另一台Windows计算机转移到Ubuntu中的数据库中。 我在互联网上搜索,代码是
pg_dump -C -t table_name -h 192.168.1.106 -p 5432 database_name1| psql -h localhost -p 5432 -U postgres database_name2
但PuTTy表明:
Password for user postgres: Password:
我需要输入两个密码:一个是Ubuntu用户postgres pw,另一个是windows计算机用户postgres pw。
我猜正确的方法是首先输入Ubuntu用户pw,然后输入计算机pw。但它显示:
pg_dump: [archiver (db)] connection to database "database_name1" failed
这是由PuTTY引起的错误吗?如果我直接使用Ubuntu计算机会是什么样的? 我也使用了分离的方式:首先是pg_dump,然后是psql。有效。 任何人都可以告诉我为什么我不能使用pg_dump转移表psql直接?
答案 0 :(得分:0)
这样做不会很好,因为两个程序都试图同时从同一个终端输入流中读取数据。其中一些得到你输入的每个部分的一些部分,因此密码被破坏了。
使用a ~/.pgpass
file提供密码,或使用PGPASSWORD
环境变量:
PGPASSWORD='pw_for_dump' pg_dump .... | PGPASSWORD='pw_for_restore' pg_restore ...
.pgpass
文件更可取。