如何在PostgreSQL中将表从服务器复制到另一个?

Kli*_*Max 7 postgresql

我在PostgreSQL 8.4上有两个服务器:

server1:5432
server2:5432
Run Code Online (Sandbox Code Playgroud)

现在我想从server1复制表并将其放在server2的数据库中.
它有可能做到吗?

UPDATE

我尝试在@Valery Viktorovsky的回答中做:

pg_dump --server1:5432 --encoding=utf8 --no-owner --username=postgres --123456 np_point > D:\np_point.sql
psql --server2:5432 --username=postgres mrsk -f D:\np_point.sql
Run Code Online (Sandbox Code Playgroud)

并得到错误:

ERROR:  syntax error at or near "pg_dump"
LINE 1: pg_dump --server1:5432 --encoding=utf8 --no-owner --use...
Run Code Online (Sandbox Code Playgroud)

Val*_*sky 11

最安全的方法是使用pg_dump.

pg_dump --host server1 --encoding=utf8 --no-owner --username=foo --password -t table_name db_name > server1_db.sql
psql --host server2 --username=foo db_name -f server1_db.sql
Run Code Online (Sandbox Code Playgroud)


小智 7

确切的命令 -

1.通过导出pg_dump到文件中:

    pg_dump --host "source hostname" --port 5432 --username "username" --no-password --verbose --file "filename" --table "source schema.tablename" "source db name"
Run Code Online (Sandbox Code Playgroud)

这将在您运行上述命令的目录中创建一个名为“filename”的文件 - 该文件将包含源表的架构和数据。您也可以给出任何绝对路径。

2.通过psql导入:

    psql --host "target hostname" --port 5432 --username "username" --password --verbose --file "file name" "target db name"  
Run Code Online (Sandbox Code Playgroud)

->这将提示输入密码

在运行导入之前,删除目标表(如果存在)。

工作得非常顺利,在 2 分钟内完成了 1000 万行