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

2023-12-12 12:12

本文主要是介绍如何使用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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/484606

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自