【YUNBEE云贝-PostgreSQL】FDW应用

news2024/12/29 9:47:55

注: 本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。

前言

Wrapper(FDW)是一项关键特性,它赋予数据库用户直接通过SQL语句访问存储于外部数据源的能力。遵循SQL/MED标准设计,FDW使PostgreSQL能够无缝对接多种异构数据库系统以及非数据库类数据源。

FDW机制由四个核心组件构成:

1. Foreign Data Wrapper:特定于各数据源的库,定义了如何建立与外部数据源的连接、执行查询及处理其他操作。例如,“postgres_fdw”用于连接其他PostgreSQL服务器,“mysql_fdw”则专门连接MySQL数据库。

2. Foreign Server:在本地PostgreSQL中定义一个外部服务器对象,对应实际的远程或非本地数据存储实例。

3. User Mapping:为每个外部服务器设置用户映射,明确哪些本地用户有权访问,并提供相应的认证信息,如用户名和密码。

4. Foreign Table:在本地数据库创建表结构,作为外部数据源中表的映射。对这些“外表”发起的SQL查询将被转换并传递给相应的FDW,在外部数据源上执行。

随着FDW生态的日益繁荣,各类针对不同数据源的FDW插件层出不穷,如postgres_fdw实现PostgreSQL间的互连互通,mysql_fdw、oracle_fdw分别用于连接MySQL和Oracle数据库,还有file_fdw可用于读取文本文件或CSV等非结构化数据。

接下来,我们重点介绍FDW功能使用。

一、外部表

使用PostgreSQL的file_fdw扩展,可以创建一个外部表来读取和查询文件系统中的文本或CSV文件。以下是如何通过file_fdw实现外部表的详细步骤:

使用场景:当有个1G表数据,CSV格式,需要和本地表运算出报表结果

1.1 准备csv数据

1.2 创建外部表



 

1.3  与本地表进行运算

二、访问其它集群中的pg库

由于pg内部不同的数据库不能访问,pg_fdw就能解决此问题。

注:如无特殊说明,以下操作均在当前库操作

2.1 创建扩展

2.2 创建外部数据服务

查看外部服务

删除外部服务





2.3 将外部服务授权给指定用户
 



 

2.4 创建外部服务的mapping

用于连接指向用户及指定数据库

查看mapping关系



 

如果密码配置错误,用以下语句修改

补充:

删除外部mapping

2.5 在远端创建表

2.6 创建外部表

补充:

查看外部表

删除外部表

2.7 访问自身集群中的pg库

实现过程和第二章节一样

实现目标:通过postgres数据库中的postgres用户访问appdb中appuser在schema:appuser中的表t1

注意:

1、添加外部表时,需要指定schme_name参数,否则会到默认public模式下找数据

三、访问oracle中的表

3.1 安装oracle客户端

根据不同数据库版本,自行到oracle官网下载,如LINUX.X64_193000_client_home包

上传解压即可

3.2 配置环境变量

3.3 配置oracle全局动态库

3.4 测试连接oracle

3.5 安装oracle_fdw

下载地址:https://github.com/laurenz/oracle_fdw

3.6 创建oracle_fdw扩展

如果碰到如下问题

先通过 ldd命令跟踪库文件的调用过程,比如

而libclntshcore.so.19.1这个包在oracle客户端的lib目录下,可以通过以下方式尝试解决:

1、通过软链接

2、直接cp

3.7 创建对oracle的外部表

四、FDW的演进与未来展望

随着时间推移,FDW的功能不断丰富和优化,包括增强性能、增加更多类型的FDW以及改善用户体验。如今,FDW已经成为PostgreSQL生态不可或缺的一部分,大大提高了其数据集成能力。

展望未来,FDW将继续成为实现跨多种数据库和非传统数据源交互的关键技术,尤其是在大数据时代背景下,对于构建复杂的企业级数据湖和数据仓库解决方案具有深远意义。同时,随着云原生和分布式计算范式的兴起,FDW也将顺应潮流,持续演进以适应更加多样化且充满挑战性的应用场景。

最后感谢学习和观看,我们会持续更新学习视频。

相关视频:【云贝教育】PostgreSQL分享课:PG-FDW:FDW概述

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

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

相关文章

Jumpserver 堡垒机用户启用双因子登录

前言: 堡垒机双因子登录 堡垒机往往是内部权限的集合体,拿到了堡垒机的用户账号密码,很容易就顺藤摸瓜攻破各种应用系统,除了常规的用户名复杂密码的要求外,我们常常都要求采用双因子的登录方式。双因子最常见的就是账…

【Super数据结构】先进先出/后进先出,队列和栈代码实现+应用场景

🏠关于此专栏:Super数据结构专栏将使用C/C语言介绍顺序表、链表、栈、队列等数据结构,每篇博文会使用尽可能多的代码片段图片的方式。 🚪归属专栏:Super数据结构 🎯每日努力一点点,技术累计看得…

HarmonyOS如何使用低代码实现界面布局

介绍 本篇Codelab是基于ArkTS语言的低代码开发方式实现的一个简单实例。具体实现功能如下: 创建一个低代码工程。通过拖拽的方式实现任务列表和任务信息界面的界面布局。在UI编辑界面实现数据动态渲染和事件的绑定。 最终实现效果如下: 相关概念 低代…

ECharts5 概念篇2

数据转换 数据转换基础使用 在 echarts 中,数据转换是依托于数据集(dataset)来实现的. 我们可以设置 dataset.transform 来表示,此 dataset 的数据,来自于此 transform 的结果。下面是上述例子的效果,三个饼…

冶炼金属(二分)

题目描述: 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。 这个炉子有一个称作转换率的属性 V,V是一个正整数,这意味着消耗 V个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时&#x…

【机器学习】基于粒子群算法优化的BP神经网络分类预测(PSO-BP)

目录 1.原理与思路2.设计与实现3.结果预测4.代码获取 1.原理与思路 【智能算法应用】智能算法优化BP神经网络思路【智能算法】粒子群算法(PSO)原理及实现 2.设计与实现 数据集: 多输入多输出:样本特征24,标签类别4…

项目五 实现对学生信息的简单查询

项目五 实现对学生信息的简单查询 1,查询数据库中部分字段的信息 使用select语句对表的选择及连接等操作,结构会生成一个临时表,将select结果存放到临时表中 查询数据表中所有字段的值 #格式:(*:表示所有列) select * from 表…

milvus安装

milvus安装 sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose- $ (uname -s)- $ (uname -m)” -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/…

SpringBoot项目通过触发器调度实现定时任务

文章目录 前言一、quartz是什么?二、quartz中核心概念三、集成步骤1.引入依赖2.demo样例a.定义一个任务参数实体类b.定义操作触发器、定时任务接口及实现c.作业实现d.结果截图 四、其他1.QuartzJobBean和Job区别2.注意事项3.作业(Job)和触发器…

考虑功率均分与电压频率的事件触发分布式二次控制MATLAB模型

微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 此模型是在《基于事件触发机制的孤岛微电网二次电压与频率协同控制MATLAB仿真模型》上进一步创作的,之前的模型只考虑了二次电压与频率控制,并没有考虑均分这一项点。 因此…

STM32相关资料汇总

STM32选型表 STM32手册参考网站 https://www.stmcu.org.cn/

文件包含漏洞之包含NGINX日志文件(常用)

条件:知道目标服务器的日志文件存贮路径,并且存在文件包含漏洞 首先对目标服务器发送一次含有木马的请求,目的是让目标服务器日志中生成含有木马的日志记录。因为发送过程中,使用了url编码,我们抓包进行更改成能够执行…

网络——入门基础

目录 协议 网络协议 OSI七层模型 网络传输基本流程 网络传输流程图 局域网通信 数据包的封装和解包 广域网通信 网络地址管理 IP地址 MAC地址 协议 关于什么是局域网,什么是广域网,我这里就不过多赘述了,我们直接来谈一下什么…

复旦发布层次性奖励学习框架,增强大模型人类偏好对齐

在人工智能领域,强化学习(Reinforcement Learning, RL)一直是实现智能体自主学习的关键技术之一。通过与环境的交互,智能体能够自我优化其行为策略,以获得更多的奖励。然而,当涉及到复杂的人类偏好时&#…

codeforces 1600分

文章目录 1.[G. Special Permutation](https://codeforces.com/problemset/problem/1352/G)2.[D. Constructing the Array](https://codeforces.com/problemset/problem/1353/D)3.[C2. k-LCM (hard version)](https://codeforces.com/problemset/problem/1497/C2)4.[C. Circle …

【ollama】linux、window系统更改模型存放位置,全网首发2024!

首先是window系统 so easy 直接进入系统环境变量添加就行 其次是linux系统 全靠自己试出来的,去Ollama官网找半天文档不知道在哪,而且linux也没有说:【 https://github.com/ollama/ollama/blob/main/docs/README.md https://github.com/o…

CSS Module

CSS Module的作用:将CSS样式作用域限制在特定的组件范围内,以避免全局样式污染和命名冲突。 Vue中如何实现样式模块…

一款博客网站源码

一款博客网站源码 源码软件库 为大家内置了主题 清爽又强大真正的永久可用的一条源码,该版本为整合版本,内置了Joe主题,搭建后直接启用即可~ 安装环境要求: PHP 7.2 以上 MySQL, PostgreSQL, SQLite 任意一种数据库支持&#xff…

BUUCTF-WEB1

[ACTF2020 新生赛]Exec1 1.打开靶机 是一个ping命令 2.利用管道符“|” ping一下本地主机并查看ls ping 127.0.0.1 | ls 可以看到回显的内容是一个文件 127.0.0.1 | cat index.php #查看主机下index.php 127.0.0.1 | ls / #查看主机根目录下的文件 看的一个flag文件 …

专升本 C语言 万字考点笔记全国通用

前言 全章内容多次校验整理,可以放心食用;如果发现内容有不严谨的地方,请随时私信张三xy 形而上学者谓之道,形而下学者谓之器 目录 前言 常考概念 一、C语言的基础知识 第一节、对C语言的基础认识 第二节、C语言程序生命周期 第三节、标识符 第四节、进制的转…