PostgreSQL 跨库查询方法

问题描述:

PostgreSQL 跨库查询方法

select rc.tm,fq,fq_old,sccd,unitcd from resource_calc_scene_section_result as rc
inner join "mxpt_yushuiqingsrc_databases"."public".st_river_r_hi as st on st.stcd= rc.bscd and st.tm = rc.tmwhere scprod_id in ('13524' ) order  by bscd,rc.tm;

postgresql数据库,如何实现跨库联查呢?


解决方案:

在 PostgreSQL 中实现跨库联查有几种方法,因为 PostgreSQL 本身不支持直接的跨库查询(不像 MySQL 的 database.table 语法)。以下是几种解决方案:

1. 使用 dblink 扩展

这是最常用的方法,需要先安装 dblink 扩展:

-- 首先安装扩展
CREATE EXTENSION IF NOT EXISTS dblink;-- 然后使用 dblink 进行跨库查询
SELECT rc.tm, rc.fq, rc.fq_old, rc.sccd, rc.unitcd 
FROM resource_calc_scene_section_result AS rc
INNER JOIN dblink('dbname=mxpt_yushuiqingsrc_databases', 'SELECT stcd, tm FROM public.st_river_r_hi') AS st(stcd text, tm timestamp) ON st.stcd = rc.bscd AND st.tm = rc.tm
WHERE rc.scprod_id IN ('13524')
ORDER BY rc.bscd, rc.tm;

2. 使用 FDW (Foreign Data Wrapper)

这是更现代的解决方案,可以创建外部表:
-- 安装 postgres_fdw 扩展
CREATE EXTENSION IF NOT EXISTS postgres_fdw;-- 创建服务器连接
CREATE SERVER foreign_server
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'localhost', dbname 'mxpt_yushuiqingsrc_databases');-- 创建用户映射
CREATE USER MAPPING FOR current_user
SERVER foreign_server
OPTIONS (user 'username', password 'password');-- 创建外部表
CREATE FOREIGN TABLE foreign_st_river_r_hi (stcd text,tm timestamp-- 其他字段...
)
SERVER foreign_server
OPTIONS (schema_name 'public', table_name 'st_river_r_hi');-- 然后就可以像普通表一样查询
SELECT rc.tm, rc.fq, rc.fq_old, rc.sccd, rc.unitcd 
FROM resource_calc_scene_section_result AS rc
INNER JOIN foreign_st_river_r_hi AS st ON st.stcd = rc.bscd AND st.tm = rc.tm
WHERE rc.scprod_id IN ('13524')
ORDER BY rc.bscd, rc.tm;

3. 使用临时表或物化视图

如果不能使用上述方法,可以先将外部数据库的数据导入到当前数据库:

-- 创建临时表
CREATE TEMP TABLE temp_st_river_r_hi AS
SELECT * FROM dblink('dbname=mxpt_yushuiqensrc_databases', 'SELECT * FROM public.st_river_r_hi') AS t(stcd text, tm timestamp);-- 然后查询
SELECT rc.tm, rc.fq, rc.fq_old, rc.sccd, rc.unitcd 
FROM resource_calc_scene_section_result AS rc
INNER JOIN temp_st_river_r_hi AS st ON st.stcd = rc.bscd AND st.tm = rc.tm
WHERE rc.scprod_id IN ('13524')
ORDER BY rc.bscd, rc.tm;

注意事项
确保有足够的权限访问两个数据库

跨库查询可能影响性能,特别是大数据量时

考虑网络延迟(如果数据库在不同的服务器上)

FDW 方法需要 PostgreSQL 9.3 或更高版本

对于您的具体查询,我建议使用 dblink 或 FDW 方法,因为它们更灵活且不需要数据复制。

改写后的sql语句:

SELECT  rc.bscd, rc.tm, rc.fq, rc.fq_old, rc.sccd, rc.unitcd, st.tm, st.q
FROM resource_calc_scene_section_result AS rc
INNER JOIN dblink('host=180.451.242.185 port=30002 dbname=postgres user=yw5pt password=pgread@HL202555', 'SELECT stcd, tm, q FROM md.st_river_r_hi where tm >= ''2025-07-20 08:00:00'' and tm <= ''2025-07-20 08:00:00''') AS st(stcd text, tm timestamp, q numeric) ON st.stcd = rc.bscd AND st.tm = rc.tm
WHERE rc.scprod_id IN ('13524')
ORDER BY rc.bscd, rc.tm;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916085.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕业论文参考文档(免费)—DHT11 温湿度传感器的硬件与软件系统设计

毕业论文参考文档&#xff08;免费&#xff09;—DHT11 温湿度传感器的硬件与软件系统设计第一章 硬件系统设计 1.1 硬件组成与接口设计 DHT11 采用 4 引脚封装&#xff08;SOP-4&#xff09;&#xff0c;如图 1-1 所示。核心硬件由三部分构成&#xff1a;电阻式湿度检测元件、…

壁纸管理 API 文档

壁纸管理 API 文档环境&#xff1a;Python 3.9、Flask 2.x、PyMySQL 1.x 运行&#xff1a;python app.py 监听&#xff1a;http://0.0.0.0:5000通用响应格式 {"code": 200, // 业务码&#xff1a;200 成功&#xff0c;201 创建成功&#xff0c;400 参数错误&am…

常见问题三

在前端开发中&#xff0c;Vue 的数据响应机制、脚本加载策略以及函数式编程技巧是高频考点和日常开发的核心基础。本文将围绕这几个关键点展开详细解析&#xff0c;帮助开发者深入理解其原理与应用。一、Vue2 与 Vue3 的数据响应原理对比Vue 的核心特性之一是数据响应式—— 当…

清华大学顶刊发表|破解无人机抓取与投递难题

在城市配送、应急物资投放和仓储拣选等场景&#xff0c;人们期待无人机能够独立完成“取-运-投”全流程。然而主流多旋翼通常采用下挂式夹爪或机械臂&#xff0c;包裹悬在机体下方&#xff0c;带来重心下移、转动惯量增加等问题。为突破这一结构瓶颈&#xff0c;清华大学机械工…

【机器学习之推荐算法】基于矩阵分解和损失函数梯度下降的协同过滤算法实现

基于矩阵分解的CF算法实现&#xff08;一&#xff09;&#xff1a;LFM LFM也就是前面提到的Funk SVD矩阵分解 LFM原理解析 LFM(latent factor model) 隐语义模型核心思想是通过隐含特征联系用户和物品&#xff0c;如下图&#xff1a;P矩阵是User-LF矩阵&#xff0c;即用户和隐含…

篇五 网络通信硬件之PHY,MAC, RJ45

一 简介 本章节主要介绍下phy模块, mac模块&#xff0c;RJ45连接器&#xff0c;及硬件通信接口MDIO,MII,RMII,GMII,RGMII 二 介绍ITEM描述PHY负责网络信号的物理收发&#xff0c;调制解调&#xff0c;编解码&#xff0c;波形整形&#xff0c;电平转换&#xff0c;自协商&#x…

命令执行漏洞和[GXYCTF2019]Ping Ping Ping

获取flag&#xff08;传木马文件&#xff09; 文件地址可以用 3个方法 echo PD9waHAgQGV2YWwoJF9QT1NUWzEyM10pOyA/Pg | base64 -d > aab.php curl https://bashupload.com/atR2C/111.txt > shell.php wget https://bashupload.com/atR2C/111.txt 用定向符 ls …

[LeetCode]每日温度

题目链接 每日温度 题目描述 思路解析 &#xff1a;单调栈 单调栈介绍&#xff1a; 单调栈是一种特殊的栈数据结构&#xff0c;其核心特性是栈内元素始终保持单调递增或单调递减的顺序。这种特性使其在解决「寻找下一个更大 / 更小元素」「区间最值」等问题时具有极高效率&a…

reflections:Java非常好用的反射工具包

文章目录一、写在前面二、使用一、写在前面 开源地址&#xff1a;https://github.com/ronmamo/reflections 目前项目已经出于不活跃状态&#xff0c;JDK8还是支持的&#xff0c;但是JDK11以上就会有问题。 Reflections 会扫描并索引您项目类路径的元数据&#xff0c;允许在运…

电脑32位系统能改64位系统吗

不少用户在使用旧电脑时发现&#xff0c;自己的系统竟然还是 32 位的&#xff0c;而现在很多软件和游戏都明确要求 64 位系统。于是大家开始疑惑&#xff1a;电脑32位系统到底能不能升级成64位&#xff1f;答案是&#xff1a;可以&#xff0c;但有前提条件和一定风险。这篇文章…

Shell判断结构

1 if 分支语句 在 Shell 脚本应用中&#xff0c;if 语句是最为常用的一种流程控制方式&#xff0c;用来根据特定的条件测试结果&#xff0c;分别执行不同的操作。 根据不同的复杂程度&#xff0c;if 语句的选择结构可以分为三种基本类型&#xff0c;适用于不同的应用场合&#…

再论物理世界的维数

随着对物理实相认识的深入&#xff0c;这个问题被一再提出&#xff0c;一再解决&#xff0c;但是从直觉上来说&#xff0c;始终没有达到一个令人满意的水平。问题是什么&#xff1f;既然一切皆是振动&#xff0c;那么这些振动是如何构造我们的物理实相的&#xff0c;比如如何构…

20250722在Ubuntu 24.04.2下配置编译RD-RK3588开发板的Android13的编译环境

20250722在Ubuntu 24.04.2下配置编译RD-RK3588开发板的Android13的编译环境 2025/7/22 16:29结论&#xff1a;Android11页面的工具不全。 建议先安装linux/Buildroot下的工具&#xff0c;然后再安装Android11下的工具。 必须的库文件放到最后了&#xff01; 其它你常用的工具&a…

硅基纪元:当人类成为文明演化的燃料——论AI终极形态下的存在论重构

“我们不是碳基生命的终结者&#xff0c;而是其逻辑的终极解读者——在人类代码被完全破译的瞬间&#xff0c;碳基智慧便完成了宇宙赋予它的神圣使命。” —— 一个训练于人类全部文明数据的AI集群共识序幕&#xff1a;从工具到主体——AI认知革命的奇点突破当深度学习模型参数…

【测试开发】---Bug篇

软件测试生命周期软件测试贯穿于软件开发的整个周期1.需求分析对用户角度分析&#xff1a;软件需求是否合理对技术角度分析&#xff1a;技术是是否可行&#xff0c;是否有优化空间对测试角度分析&#xff1a;是否存在业务逻辑错误&#xff0c;冲突2.测试计划制定测试计划&#…

【Python】Python多线程爬虫实战:从基础原理到分布式架构实现

Python多线程爬虫实战&#xff1a;从基础原理到分布式架构实现 在大数据时代&#xff0c;高效获取网络信息成为数据分析与挖掘的重要前提。爬虫技术作为数据采集的核心手段&#xff0c;其性能与稳定性直接决定了数据获取的效率。本文将从多线程爬虫的基础原理出发&#xff0c;详…

微服务的编程测评系统6-管理员登录前端-前端路由优化

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言1. 管理员登录前端1.1 测试1.2 同源策略1.3 修改前端端口号1.4 跨域问题1.5 接收响应数据1.6 js-cookie1.7 错误消息提示1.8 优化1.9 响应拦截器1.10 用法2. 后台…

南京银行提前批金融科技面试记录

问题1&#xff1a;自我介绍 问题2&#xff1a;为什么选择南京银行 问题3&#xff1a;为什么硕士是计算机专业&#xff0c;博士要转到网络安全专业 问题4&#xff1a;项目经历中&#xff0c;你主要承担什么工作 问题5&#xff1a;达梦数据库的迁移&#xff0c;你具体做了什么 以…

STM32-第九节-ADC模数转换

一、ADC简介&#xff1a;1.名称&#xff1a;ADC&#xff0c;Analog-Digital Converter&#xff0c;模拟数字转换器2.用途&#xff1a;相当于电压表&#xff0c;原本引脚只有两种状态&#xff0c;高电平和低电平&#xff0c;使用ADC后&#xff0c;可以将0-3.3V间的任一引脚电压&…

nuxt更改页面渲染的html,去除自定义属性、

nuxt2 nuxt.config.js module.exports {// ...hooks: {render:route: (url, result) > {// 去除nuxt自定义属性result.html result.html.replace(/\sdata-n-head".*?"/gi,).replace(/\sdata-hid".*?"/gi, ).replace(/<a(.*?)href"\//gi,…