当前位置: 首页 > 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语法_华为云

——结束

相关文章:

  • STM32超声波——HC_SR04
  • 解读 | 为什么有很多名人让人们警惕人工智能
  • 【NR技术】NR NG-RAN整体架构 -功能划分(三)
  • 人工智能|深度学习——知识蒸馏
  • 基于单片机的定时插座在智能家居中的应用
  • Linux ln命令教程:如何创建符号链接(附案例详解和注意事项)
  • 双荧光素酶报告基因检测(五)
  • 大模型应用_AutoGPT
  • viple与物理机器人(一):线控模拟
  • MySQL InnoDB Replication部署方案与实践
  • EMQX(5.3.1)多机集群部署
  • 总结6种@Transactional注解的失效场景
  • 「差生文具多系列」推荐两个好看的 Redis 客户端
  • 【每日一题】—— B. StORage room(Codeforces Round 912 (Div. 2))(位操作符)
  • 数字孪生技术的应用场景
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • C++类的相互关联
  • gulp 教程
  • JDK9: 集成 Jshell 和 Maven 项目.
  • LintCode 31. partitionArray 数组划分
  • mysql 数据库四种事务隔离级别
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React组件设计模式(一)
  • Redis中的lru算法实现
  • 订阅Forge Viewer所有的事件
  • 对超线程几个不同角度的解释
  • 关于extract.autodesk.io的一些说明
  • 将回调地狱按在地上摩擦的Promise
  • 警报:线上事故之CountDownLatch的威力
  • 聊聊redis的数据结构的应用
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 提醒我喝水chrome插件开发指南
  • 用Canvas画一棵二叉树
  • 《码出高效》学习笔记与书中错误记录
  • 大数据全解:定义、价值及挑战
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 达梦数据库知识点
  • (4)(4.6) Triducer
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C++17) std算法之执行策略 execution
  • (C语言)fread与fwrite详解
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (五)c52学习之旅-静态数码管
  • (转)EOS中账户、钱包和密钥的关系
  • (转)VC++中ondraw在什么时候调用的
  • .NET CLR基本术语
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .Net Winform开发笔记(一)
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET导入Excel数据
  • .Net组件程序设计之线程、并发管理(一)
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • [100天算法】-x 的平方根(day 61)
  • [2023-年度总结]凡是过往,皆为序章