postgresql 跨库访问外部表 存储过程
来源:互联网 发布:网络与思想政治教育 编辑:程序博客网 时间:2024/06/17 14:21
一、建环境1、创建一个拓展 create extension dblink; 若执行上述sql报错:ERROR: could not open extension control file "/usr/share/postgresql/9.3/extension/tablefunc.control": No such file or directory 则执行下面命令来安装相关依赖:sudo apt-get install postgresql-contrib2、通过相应的函数来建立连接 select dblink_connect('test_dblink','dbname=xxxx host=xx.xx.xx.xx port=xxxx user=xxxx password=xxxx');3、通过指定的函数来获取相关跨库数据 select * from dblink('test_dblink','select update_time, id from t_account_config') as test(a timestamp, b int);4、关闭边接 select dblink_disconnect('test_dblink');
二、存储过程-- Function: dblink_get_phone_info()-- DROP FUNCTION dblink_get_phone_info();CREATE OR REPLACE FUNCTION dblink_get_phone_info() RETURNS boolean AS$BODY$DECLARE recordRow RECORD;DECLARE lastUpdateTime timestamp;DECLARE querySqlStr text;DECLARE lastUpdateTimeStr text;BEGIN-- 获取当前本库数据最后更新时间SELECT create_time INTO lastUpdateTime FROM t_phone_consume_statistic ORDER BY create_time DESC LIMIT 1;-- 本地无数据,则IF lastUpdateTime IS NULL THENSELECT now() INTO lastUpdateTime;END IF;-- 将时间转为字符串lastUpdateTimeStr:=to_char(lastUpdateTime, 'YYYY-MM-DD HH12:MI:SS.MS');-- 拼接查询数据库querySqlStr:= 'select phone_imsi, phone_number, phone_add_time from t_phone where phone_add_time > ' || quote_literal(lastUpdateTimeStr) || ' order by phone_add_time DESC limit ' || 100;-- 建立跨库连接PERFORM dblink_connect('dblink','dbname=xxxx host=xx.xx.xx.xx port=xxxx user=xxxx password=xxxx');-- 循环写入获得数for recordRow IN select * from dblink('dblink', querySqlStr) as data(phoneImsi bigint, phoneNumber text, addTime timestamp) LOOP-- 手机号为空则不插入IF recordRow.phoneNumber IS NOT NULL THENINSERT INTO t_phone_consume_statistic (phone_num, imsi, create_time) VALUES (recordRow.phoneNumber, recordRow.phoneImsi, recordRow.addTime);END IF;END LOOP;-- 断开跨库连接PERFORM dblink_disconnect('dblink');RETURN TRUE;END$BODY$ LANGUAGE plpgsql VOLATILE COST 100;ALTER FUNCTION dblink_get_phone_info() OWNER TO postgres;
0 0
- postgresql 跨库访问外部表 存储过程
- postgresQL 存储过程 编程
- PostgreSQL 存储过程调试
- PostgreSQL 存储过程
- PostgreSQL 存储过程
- postgreSQL 存储过程
- PostgreSQL 存储过程
- PostgreSQL 存储过程
- PostgreSQL 存储过程
- PostgreSQL存储过程初探
- PostgreSQL 存储过程
- PostgreSQL-存储过程
- PostgreSQL的存储过程
- POSTGRESQL 存储过程实战
- PostgreSQL外部表项目
- PostgreSQL外部表
- postgresql的外部表
- PostgreSQL外部表应用
- string=['Enter value'int2str(i)':'];报错
- 模板 渲染
- Git易混概念与命令
- 高性能Mysql主从架构的复制原理及配置详解
- speed improvement by merging batch normalization and scale
- postgresql 跨库访问外部表 存储过程
- String、StringBuffer,StringBuilder区别
- Java多线程学习(吐血超详细总结)
- JDBC基础
- String中查询重复字符
- Shell Script 学习笔记
- oracle数据块学习
- 异步任务AsyncTask使用
- 轻量开源相册 Album