pg数据库A库 B库表数据迁移(亲测有效)

1 需求

现在在pg 数据库里面,有两个库,A 库和 B库
现在需要将B 库里面一个表里面的数据,迁移到A库里面的一个表,但是字段有可能有一些差别,而且不是表里面数据全部迁移,是一个时间段,获取分区表里面特定分区里面的数据进行迁移

2 实现

前提是PG 数据库

dblink 扩展安装:dblink 是一个可选扩展,需要手动安装。

安装

CREATE EXTENSION IF NOT EXISTS dblink;

检查是否安装成功

SELECT * FROM pg_extension WHERE extname = 'dblink';

在这里插入图片描述
有以上的结果就是安装成功
确保 dblink 所在的 schema(通常是 public)在搜索路径中:

SHOW search_path;

如果 public 不在路径中,可以临时添加:

SET search_path TO public, "$user", pg_catalog;

或永久修改 postgresql.conf:

search_path = '"$user", public'

接下来就进行迁移
以下命令是在A 库进行操作
实现将B库里面的数据迁移到A 库

INSERT INTO user_202307 (
	num,
	obs_time,
	lat,
	lon,
	rh,
	AA

) SELECT
* 
FROM
	dblink ( 'dbname=B user=root  password=123456', 'SELECT num,obs_time,lat,lon,rh,aa FROM user_202307' ) AS remote (
		num VARCHAR,
		obs_time TIMESTAMP,
		lat NUMERIC,
		lon NUMERIC,
		rh NUMERIC,
		aa NUMERIC 
	
	) ON conflict ( num, obs_time ) DO
	NOTHING;

即使user 分区表内的字段很多,如果只是迁移几个字段,那么就写几个,顺序要一致
如果要查询一个时间段,那么在语句里面的select语句里面可以增加时间段条件;

还需要注意,表里面的非空字段,一定要进行写,不然会报错,或者你不想要那个字段,但是他是非空,你把这个字段非空属性去掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值