我试图在Postgres中从一个数据库复制整个表到另一个数据库。有什么建议吗?
当前回答
使用dblink会更方便!
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);
其他回答
使用pg_dump转储表数据,然后使用psql恢复。
Pg_dump并不总是有效。
假设在两个dbs中有相同的表ddl 你可以从stdout和stdin中破解它,如下所示:
# grab the list of cols straight from bash
psql -d "$src_db" -t -c \
"SELECT column_name
FROM information_schema.columns
WHERE 1=1
AND table_name='"$table_to_copy"'"
# ^^^ filter autogenerated cols if needed
psql -d "$src_db" -c \
"copy ( SELECT col_1 , col2 FROM table_to_copy) TO STDOUT" |\
psql -d "$tgt_db" -c "\copy table_to_copy (col_1 , col2) FROM STDIN"
您还可以使用pgAdmin II中的备份功能。只需遵循以下步骤:
In pgAdmin, right click the table you want to move, select "Backup" Pick the directory for the output file and set Format to "plain" Click the "Dump Options #1" tab, check "Only data" or "only Schema" (depending on what you are doing) Under the Queries section, click "Use Column Inserts" and "User Insert Commands". Click the "Backup" button. This outputs to a .backup file Open this new file using notepad. You will see the insert scripts needed for the table/data. Copy and paste these into the new database sql page in pgAdmin. Run as pgScript - Query->Execute as pgScript F6
工作良好,可以做多个表在一个时间。
你可以这样做:
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>
我使用的是DataGrip (By Intellij Idea)。将数据从一个表(在不同的数据库中)复制到另一个表非常容易。
首先,确保你在Data Grip中连接了两个数据源。
选择源表并按F5或(右键单击->选择复制表到。)
这将显示所有表的列表(您也可以在弹出窗口中使用表名进行搜索)。选择你的目标,然后按OK。
DataGrip将为您处理其他一切。
推荐文章
- 如何改变一个列的数据类型在PostgreSQL表?
- 获取PostGIS版本
- 如何添加“删除级联”约束?
- 如何将PostgreSQL从9.6版本升级到10.1版本而不丢失数据?
- 为现有数据库生成ERD
- PostgreSQL错误:由于与恢复冲突而取消语句
- 按IN值列表排序
- 如何在Postgres 9.4中对JSONB类型的列执行更新操作
- PostgreSQL列名区分大小写吗?
- postgresql COUNT(DISTINCT…)非常慢
- Postgres:检查数组字段是否包含值?
- 如何在postgresql中创建数据库用户?
- 使用PSQL命令查找主机名和端口
- Postgresql列表和排序表的大小
- 选择其他表中没有的行