我试图从一个Postgres数据库复制整个表至另一个数据库,有什么建议吗?
我试图从一个Postgres数据库复制整个表至另一个数据库,有什么建议吗?
提取表格并直接将其导入目标数据库:
pg_dump -t table_to_copy source_db | psql target_db
注意:如果另一个数据库已经设置好了表格,您应该使用-a
标志仅导入数据,否则您可能会看到奇怪的错误,例如“内存不足”:
pg_dump -a -t table_to_copy source_db | psql target_db
pg_dump -U remote_user -h remote_server -t table_to_copy source_db | psql target_db
。 - thomaxpg_dump -a -t my_table my_db | psql target_db
。此外,如果您的数据库位于服务器上,我建议将数据库转储到文件中,然后将该文件传输到数据库,最后将文件内容发送到psql。例如,pg_dump -a -t my_table my_db > my_file.sql
,然后将文件传输到您的服务器,最后使用以下命令将文件内容发送到另一个数据库:psql my_other_db < my_file.sql
。 - Nick Bradypg_dump -t '"tableToCopy"' source_db | psql target_db
。
请注意,表名用单引号和双引号括起来。 - gilad905你还可以使用pgAdmin II中的备份功能。只需按照以下步骤操作:
这种方法效果很好,而且可以同时处理多个表格。
truncate table tableA;
insert into tableA
select *
from dblink('hostaddr=xxx.xxx.xxx.xxx dbname=mydb user=postgres',
'select a,b from tableA')
as t1(a text,b text);
在具有与两个服务器的连接性的Linux主机上,使用psql
( export PGPASSWORD=password1
psql -U user1 -h host1 database1 \
-c "copy (select field1,field2 from table1) to stdout with csv" ) \
|
( export PGPASSWORD=password2
psql -U user2 -h host2 database2 \
-c "copy table2 (field1, field2) from stdin csv" )
PGPASSWORD=password1 psql -U ...
即可,这样甚至不需要显式的子shell!通常情况下,您可能需要先进行一些设置,因此子shell仍然是必要的。此外,密码不会被导出到后续进程中。谢谢! - lmat - Reinstate Monicapg_dump -t '<table_name>' --schema-only
命令。 - fjsjpg_dump -U Username -h DatabaseEndPoint -a -t TableToCopy SourceDatabase | psql -h DatabaseEndPoint -p portNumber -U Username -W TargetDatabase
如果您已经有一个现有架构,它将把源数据库中提到的表复制到目标数据库的同名表中。
INSERT INTO t2 select * from
dblink('host=1.2.3.4
user=*****
password=******
dbname=D1', 'select * t1') tt(
id int,
col_1 character varying,
col_2 character varying,
col_3 int,
col_4 varchar
);
INSERT INTO l_tbl (l_col1, l_col2, l_col3) SELECT * FROM dblink('dbname=r_db hostaddr=r_ip password=r_pass user=r_usr', 'select r_col1, r_col2, r_col3 from r_tbl where r_col1 between ''2015-10-29'' AND ''2015-10-30'' ') AS t1(col1 MACADDR, col2 TIMESTAMP, col3 NUMERIC(7,1));
(l表示本地,r表示远程。转义单引号。提供列类型。) - hamx0r使用pg_dump命令导出表数据,然后使用psql命令进行恢复。
pg_dump -h localhost -U myuser -C -t my_table -d first_db>/tmp/table_dump
然后加载转储文件:
psql -U myuser -d second_db</tmp/table_dump
pg_dump -h <host ip address> -U <host db user name> -t <host table> > <host database> | psql -h localhost -d <local database> -U <local db user>
如果您想将数据库A中的表移动到本地设置的数据库B中,请使用以下命令:
pg_dump -h localhost -U owner-name -p 5432 -C -t table-name database1 | psql -U owner-name -h localhost -p 5432 database2
export PGPASSWORD=<passw>
。 - lukaszzenko