当前位置: 首页 > news >正文

如何使用GaussDB创建外表(FOREIGN TABLE)

目录

一、前言

二、创建外表的特点

二、GaussDB创建外表访问外部数据库表(示例)

1、创建外表

2、FAQ:CREATE USER MAPPING错误

三、GaussDB创建外表映射数据文件(示例)

1、创建数据文件

2、创建外表

3、FAQ:创建(外部服务器/外表)时报错

四、小结

一、前言

GaussDB是一个高效、可靠、安全的企业级数据库管理系统,它提供了丰富的功能和卓越的性能,以满足不同行业的业务需求。在GaussDB中,创建外表(CREATE FOREIGN TABLE)是一种方便的机制,用于访问外部数据源并对其进行统一管理和查询。通过创建外表,用户可以将存储在文件系统、外部表、视图等外部数据源中的数据集成到GaussDB数据库中,并像操作普通表一样进行查询、连接和并行操作等。

在本篇文章中,我们将介绍如何使用GaussDB创建外表,以及通过一些简单的示例进行说明。

二、创建外表的特点

用户可以将外部数据源(如文件系统、外部表、视图等)的数据映射为数据库中的一张表,并对其进行查询、连接和并行操作等,就像对普通表进行操作一样。

具体来说,创建外表有以下一些特点:

  • 统一数据源管理:通过将多个外部数据源的数据集成到一张表中,用户可以方便地对这些数据进行统一查询使用,避免了多个不同的数据源之间的切换和拼接。
  • 提高查询效率:通过创建外表,用户可以将原本需要直接对外部数据源进行查询的操作转换为对数据库中的表进行查询,这可以避免一些重复的数据读取和解析操作,从而提高查询效率。

二、GaussDB创建外表访问外部数据库表(示例)

1、创建外表

通过创建外表(F_A)访问另一数据库(demo)中的表(websites):

--安装一个扩展(fdw工具) 
create extension postgres_fdw; --创建远程(外部)服务器,定义主机地址、端口、数据库名
drop server fore_server;
create server fore_server foreign data wrapper postgres_fdw options(host '192.168.52.3',port '26000',dbname 'demo');--定义一个用户到一个外部服务器的新映射。
drop USER MAPPING FOR USER SERVER fore_server;
CREATE USER MAPPING FOR USER SERVER fore_server OPTIONS (user 'dbuser', password 'Gauss#3demo');--创建外部表
DROP FOREIGN TABLE F_A;
CREATE FOREIGN TABLE F_A(id INT,name VARCHAR(20),url VARCHAR(50)
) SERVER fore_server OPTIONS (SCHEMA_NAME 'demo',TABLE_NAME 'websites');--访问外部表
SELECT * FROM F_A;

示例结果:如下截图中的返回结果与websites表中的数据一致。

2、FAQ:CREATE USER MAPPING错误

“  ERROR:  No key file usermapping.key.cipher

HINT:  Please create usermapping.key.cipher file with gs_guc and gs_ssh, such as :gs_ssh -c "gs_guc generate -S XXX -D $GAUSSHOME/bin -o usermapping"   

解决方案:执行命令行

“  gs_ssh -c "gs_guc generate -o usermapping -S default -D $GAUSSHOME/bin"  

三、GaussDB创建外表映射数据文件(示例)

1、创建数据文件

进入服务器目录,创建用于存放数据文件的目录“mkdir input_data” ,并创建一个测试数据文件(如截图)。 绝对路径:“/gaussdb/input_data/test_f1.csv” 。

2、创建外表

--安装file_fdw工具(pg_extension)
CREATE EXTENSION file_fdw;--创建外部服务器
CREATE SERVER file_fdw_server FOREIGN DATA WRAPPER file_fdw;--建立外表,映射指定目录下的数据文件(test_f1.csv)。
CREATE FOREIGN TABLE f_input_test
(id INT,name VARCHAR(10),age INT
) SERVER file_fdw_server OPTIONS (filename '/gaussdb/input_data/test_f1.csv', format 'csv', delimiter ',');--访问
SELECT * FROM f_input_test

说明:如上过程需要管理员角色执行。

示例结果:

3、FAQ:创建(外部服务器/外表)时报错

“ ERROR:  Dist fdw are only available for the supper user and Operatoradmin 

解决方案:切换管理员角色执行。

四、小结

在GaussDB数据库中,FOREIGN TABLE是一种用于创建外部表的方法。通过这种方式,可以将其他数据库或文件中的数据映射到GaussDB数据库中,实现数据的共享和访问。

外表的特点包括跨数据库的数据查询和操作、提高数据的集成和共享能力、支持多种数据模型和存储引擎。 在实际应用场景中,可以通过创建外表来实现:数据迁移(将一个数据库中的数据导入到另一个数据库中)、数据整合(将多个数据库中的数据进行合并和分析)、数据共享(将一个数据库中的数据提供给其他数据库或应用程序使用)等。

更多示例参见官方文档:

CREATE FOREIGN TABLE_云数据库 GaussDB_主备版_3.x版本_SQL参考_SQL语法_华为云

——结束

相关文章:

如何使用GaussDB创建外表(FOREIGN TABLE)

目录 一、前言 二、创建外表的特点 二、GaussDB创建外表访问外部数据库表(示例) 1、创建外表 2、FAQ:CREATE USER MAPPING错误 三、GaussDB创建外表映射数据文件(示例) 1、创建数据文件 2、创建外表 3、FAQ&a…...

服务器数据恢复—raid5少盘状态下新建raid5如何恢复原raid5数据?

服务器数据恢复环境: 一台服务器上搭建了一组由5块硬盘组建的raid5阵列,服务器上层存放单位重要数据,无备份文件。 服务器故障&分析: 服务器上raid5有一块硬盘掉线,外聘运维人员在没有了解服务器具体情况下&#x…...

软件工程 考试重点

结构化分析 考虑数据和处理的需求分析方法,称为结构分析方法(SA) 结构化分析基于 分解、抽象 的基本思想 分解:对于复杂的系统,为将复杂度降低到可以掌握的程度,可以把大问题分解为若干个小问题&#xf…...

swing快速入门(六)

注释很详细,直接上代码 上一篇 本篇新增内容 Gridlayout(网格布局) Textfield组件的最大限定长度 Panel()的默认布局方式 Gridlayout的默认布局位置 import java.awt.*;public class swing_test_4 {public static void main(String[]ar…...

《opencv实用探索·十四》VideoCapture播放视频和视像头调用

1、VideoCapture播放视频 #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main() {// 定义相关VideoCapture对象VideoCapture capture;// 打开视频文件capture.open("1.avi");// 判断视频流读取是否正…...

Vue中$props、$attrs和$listeners的使用详解

文章目录 透传属性如何禁止“透传属性和事件”多根节点设置透传访问“透传属性和事件” $props、$attrs和$listeners的使用详解 透传属性 透传属性和事件并没有在子组件中用props和emits声明透传属性和事件最常见的如click和class、id、style当子组件只有一个根元素时&#xf…...

爱智EdgerOS之深入解析AI图像引擎如何实现AI视觉开发

一、前言 AI 视觉是为了让计算机利用摄像机来替代人眼对目标进行识别&#xff0c;跟踪并进一步完成一些更加复杂的图像处理。这一领域的学术研究已经存在了很长时间&#xff0c;但直到 20 世纪 70 年代后期&#xff0c;当计算机的性能提高到足以处理图片这样大规模的数据时&am…...

Pytest+Allure生成自动化测试报告!

前言 在自动化测试中&#xff0c;有unittestHTMLTestRunner自动化测试报告&#xff0c;但是生成的测试报告不够美观详细&#xff0c;今天我们来学习一下PytestAllure生成自动化测试报告。 一&#xff1a;安装python中的allure依赖库 在dos窗口中&#xff0c;输入下面三个命令…...

HTMLTestRunner

HTMLTestRunner是Python的标准库unittest单元测试框架的一个扩 展&#xff0c;用于生成HTML测试报告 下载地址&#xff1a; http://tungwaiyip.info/software/HTMLTestRunner.html HTML测试结果 HTMLTestRunner.py下载地址http://tungwaiyip.info/software/HTMLTestRunner.htm…...

ELK架构监控MySQL慢日志

目录 一、架构概述 二、安装部署 三、Filebeat配置 四、Logstash配置 一、架构概述 本文使用将使用filebeat收集mysql日志信息&#xff0c;发送到redis中缓存&#xff0c;由logstash从redis中取出&#xff0c;发送es中存储&#xff0c;再从kibana中展示。 二、安装部署 ELK…...

Linux命令---关机

介绍 使用命令关闭linux服务器或计算机 命令 立即关机&#xff1a; shutdown -h now指定十分钟后关机&#xff1a; shutdown -h 10...

点云从入门到精通技术详解100篇-基于拓扑约束的3D点云实例分割(续)

目录 3.6实验结果与分析 3.6.1实验数据集 3.6.2实验设置 3.6.3定量结果 3.6.4定性评价...

java版Spring Cloud+Spring Boot+Mybatis之隐私计算 FATE - 多分类神经网络算法测试

一、说明 本文分享基于 Fate 使用 横向联邦 神经网络算法 对 多分类 的数据进行 模型训练&#xff0c;并使用该模型对数据进行 多分类预测。 二分类算法&#xff1a;是指待预测的 label 标签的取值只有两种&#xff1b;直白来讲就是每个实例的可能类别只有两种 (0 或者 1)&…...

Java之时间类2(JDK8新增)

一、Date类 &#xff08;一&#xff09;、ZoneId&#xff1a;时区 1、概述 ZoneId是Java 8中处理时区的类。它用于表示时区标识符&#xff0c;例如“America/New_York”或“Asia/Tokyo”。一共有600个时区。 2、常用方法: static Set<String> getAvailableZoneIds()获…...

MySQL InnoDB Replication部署方案与实践

1. 概述 MySQL Innodb ReplicaSet 是 MySQL 团队在 2020 年推出的一款产品&#xff0c;用来帮助用户快速部署和管理主从复制&#xff0c;在数据库层仍然使用的是主从复制技术。 ReplicaSet 主要包含三个组件&#xff1a;MySQL Router、MySQL Server 以及 MySQL Shell 高级客户…...

进程的同步和异步、进程互斥

一、进程同步和异步 同步&#xff08;Synchronous&#xff09;&#xff1a; 同步指的是程序按照顺序执行&#xff0c;一个操作完成后才能进行下一个操作。在多进程或多线程的环境中&#xff0c;同步意味着一个进程&#xff08;或线程&#xff09;在执行某个任务时&#xff0c;…...

搞定课件录制,新手必备指南!

“有人知道课件怎么录制吗&#xff1f;学校要求我们师范专业的学生出去实习&#xff0c;现在需要录制一个课件视频&#xff0c;以便在课堂上播放&#xff0c;可是我不会录制教学视频&#xff0c;真的很头疼&#xff0c;有人能帮帮我吗。” 随着在线教育的崛起&#xff0c;课件…...

DevOps搭建(九)-Jenkins实现基础CI、CD详细操作

1、创建可运行SpringBoot项目 1.1、创建一个新工程 在idea里创建一个项目,这里叫devops-test,如下图: String Boot版本要选择2.x的,依赖直选中Spring Web选项即可: 修改pom.xml文件,在build标签中增加如下内容,目的是简化jar包名称。 <finalName>devops-test&l…...

十指波课堂:让学习编程不再是难事

十指波课堂是一家致力于发展线上私教平台的教育机构&#xff0c;主要的科目是计算机编程相关语言。由于学习编程的过程较为困难&#xff0c;学习者没有具体的学习方向&#xff0c;将要达到的就业水平不明&#xff0c;总会因为一些小问题困扰几个小时&#xff0c;这样会严重的影…...

IDEA卡顿,进行性能优化设置(亲测有效)——情况二

问题背景与现象 IDEA今天突然显示到期&#xff0c;于是从同事那边搞到一个很好用的破解方式&#xff0c;说实话&#xff0c;非常方便&#xff08;后续在安前码后中分享&#xff09; 破解之后呢&#xff0c;香了一阵子&#xff0c;但是突然显示开始卡顿&#xff0c;界面几乎是…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...