南大通用数仓-GCDW-学习-05-外部表

devtools/2025/2/13 22:56:33/

目录

一、环境信息

二、概念

三、注意点

四、支持数据源和数据格式

五、实操

1、创建外部表

(1)语法树

(2)示例

2、查看外部表

(1)语法树

(2)示例

3、查看外部表详细

(1)语法树

(2)示例

4、查看外部表定义

(1)语法树

(2)示例

5、删除外部表

(1)语法树

(2)示例


一、环境信息

名称
CPUIntel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz
操作系统CentOS Linux release 7.9.2009 (Core)
内存4G
逻辑核数4
GCDW版本9.8.0.6.17
集群节点1IP192.168.142.10

二、概念

外部表与数据库内部表相区别,该表数据存储在数据库以外,数据库内仅有该表的表结构。 用户可创建外部表,指定外部表的表结构、外部表的数据源以及数据文件的格式。 GCDW 数据库系统通过外部表的定义识别外部表信息,能够从所定义的数据源按照定义的数据格式读取数据或者写入数据,且写入数据仅支持追加写。

三、注意点

1. 目前仅支持创建、删除外部表。
2. 不支持 alter 修改外部表。
3. 外部表不支持 create table ...like 语句和 create table ...as select 语句。
4. 不支持基于外部表创建视图。
5. 不支持自增列、脱敏列、加密列、tablespace属性。

四、支持数据源和数据格式

名称描述
支持数据源HDFS
S3
HTTP
FTP
SFTP

名称描述
支持数据文件格式orc
parquet
avro
txt
csv
json

五、实操

1、创建外部表

(1)语法树

CREATE [LOAD] [READ|WRITE] EXTERNAL TABLE [IF NOT EXISTS] [database_name.]table_name(column_definition[,column_definition],...)
LOCATION 'location_url'
INFORMAT [options]
OUTFORMAT [options]
名称描述
LOAD可选参数,加LOAD关键字表示采用加载方式查询外部表,不加LOAD关键字表示采用文件切分方式查询外部表。

1.加载方式查询外部表说明:select 外部表时,先将外部表数据加载入库,同时会在库内表最后添加一列bigint类型fileid列,用来标识一行数据属于哪个文件,加载完成后再做库内查询。如果查询时该外部表已经被加载在库内了,就检查更新库内表,load增量或者delete后load,使库内数据与外部表数据一致后,再进行查询。加载阶段表上有互斥锁。这种方式适用于外部表文件格式为不包含元数据的文本文件(csv、txt等)的场景。

2.文件切分方式查询外部表说明:select外部表时,先获取外部表文件列表,按最小单位切分得到文件块列表,下发不同的节点读取,获取元数据信息构建BSI(DC的统计信息),然后再从数据文件读取数据到文件块级缓存和DC级缓存(此阶段锁为文件块锁或者DC锁),最后从DC缓存中读取查询数据并返回。这种方式适用于外部表文件格式包含元数据的数据文件,如orc、parquet等场景。
READ|WRITE该参数为可选参数,外部表具有读写标志,默认为 read 外部表,即只读外部表;也可定义为 write 外部表,即该外部表可读、可写。
IF NOT EXISTS该参数为可选参数,用户可以使用关键字 IF NOT EXISTS 创建表,如果表已经存在,系统将报告 WARNING 信息
database_name该参数为可选参数,指定数据库后,在此数据库下创建表。如果没有显示指定database_name 参数,创建的表隶属于 USE database_name 后的数据库中的表。
column_definitioncolumn_name data_type [NOT NULL|NULL] [DEFAULT default_value] 列的类型为8a/GCDW支持的类型,如数值型、字符型、日期时间型。不支持TEXT、LONGTEXT、BLOB、LONTBLOB、BINARY、VARBINARY类型。
LOCATION指定数据源的位置。只读数据源可指定为路径或者具体的文件。指定路径时,将读取该路径下的全部文件。可写外部源只能指定为路径,否则建表时报错。对于外部表location相同情况下,通过可写外部表成功写入的数据,其他外部表可以查看到该数据内容。
示例:
LOCATION 's3vs://AWSAccessKeyId:AWSSecretKey@bucket.s3-aws-region.amazonaws.com/region/key'
LOCATION 'hdp://gbase@127.0.0.1:50070/data/'
LOCATION 'http://gbase:gbase@127.0.0.1/data/a.tbl'
LOCATION 'ftp://gbase:gbase@127.0.0.1/data/a.tbl'
LOCATION 'sftp://gbase:gbase@127.0.0.1/data/a.tbl'
INFORMAT参数含义同普通表加载的参数含义    指定读外部表的配置信息。
OUTFORMAT参数含义同普通表加载的参数含义    指定写外部表的配置信息,创建只读外部表也必须具有OUTFORMAT关键字。

(2)示例

gbase> CREATE WRITE EXTERNAL TABLE ssbm_external.customer(->   "C_CUSTKEY" int(11) DEFAULT NULL,->   "C_NAME" varchar(25) NOT NULL,->   "C_ADDRESS" varchar(40) NOT NULL,->   "C_CITY" varchar(10) NOT NULL,->   "C_NATION" varchar(15) NOT NULL,->   "C_REGION" varchar(12) NOT NULL,->   "C_PHONE" varchar(15) NOT NULL,->   "C_MKTSEGMENT" varchar(10) NOT NULL-> ) LOCATION 'sftp://gbase:gbase@192.168.142.10//home/gbase/G8aFile/customer/*' -> INFORMAT DATA_FORMAT 3 FIELDS TERMINATED BY '|' OUTFORMAT FIELDS TERMINATED BY '|';
Query OK, 0 rows affected (Elapsed: 00:00:00.36)

2、查看外部表

(1)语法树

show tables;

(2)示例

gbase> show tables;      
+-------------------------+
| Tables_in_ssbm_external |
+-------------------------+
| customer                |
| customer_copy           |
+-------------------------+
2 rows in set (Elapsed: 00:00:00.01)

3、查看外部表详细

(1)语法树

show full tables;

(2)示例

gbase> show full tables;
+-------------------------+----------------+
| Tables_in_ssbm_external | Table_type     |
+-------------------------+----------------+
| customer                | EXTERNAL TABLE |
| customer_copy           | EXTERNAL TABLE |
+-------------------------+----------------+
2 rows in set (Elapsed: 00:00:00.01)

4、查看外部表定义

(1)语法树

show create table DB.TABLE_NAME;

(2)示例

gbase> show create table ssbm_external.customer;
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| customer | CREATE WRITE EXTERNAL TABLE "customer" ("C_CUSTKEY" int(11) DEFAULT NULL,"C_NAME" varchar(25) NOT NULL,"C_ADDRESS" varchar(40) NOT NULL,"C_CITY" varchar(10) NOT NULL,"C_NATION" varchar(15) NOT NULL,"C_REGION" varchar(12) NOT NULL,"C_PHONE" varchar(15) NOT NULL,"C_MKTSEGMENT" varchar(10) NOT NULL
)  LOCATION 'sftp://gbase:gbase@192.168.142.10//home/gbase/G8aFile/customer/*'INFORMAT  CHARSET 'utf8' DATA_FORMAT 3 FILE_FORMAT UNDEFINED  FIELDS TERMINATED BY '|'OUTFORMAT  FIELDS TERMINATED BY '|' ESCAPED BY '\\' LINES STARTING BY '' WRITEMODE BY NORMAL ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)

5、删除外部表

(1)语法树

DROP TABLE DB.TABLE_NAME;

(2)示例

gbase> DROP TABLE ssbm_external.customer;         
Query OK, 0 rows affected (Elapsed: 00:00:00.26)


http://www.ppmy.cn/devtools/158610.html

相关文章

38.社区信息管理系统(基于springboothtml)

目录 1.系统的受众说明 2.需求分析及相关技术 2.1设计目的 2.2社区信息管理系统的特点 2.3可行性分析 2.3.1技术可行性 2.3.2运行可行性 2.4系统设计 2.4.1系统功能分析 2.4.2管理员权限功能设计 2.4.3业主权限功能设计 2.5系统的技术介绍 2.5.1 Html 2.5.2 Aja…

SpringBoot+Dubbo+zookeeper 急速入门案例

项目目录结构&#xff1a; 第一步&#xff1a;创建一个SpringBoot项目&#xff0c;这里选择Maven项目或者Spring Initializer都可以&#xff0c;这里创建了一个Maven项目&#xff08;SpringBoot-Dubbo&#xff09;&#xff0c;pom.xml文件如下&#xff1a; <?xml versio…

PySide6 异步执行任务开发指南

PySide6 异步执行任务开发指南 在 GUI 开发中&#xff0c;保持界面响应是关键。以下是在 PySide6 中实现异步任务的完整解决方案&#xff1a; 一、基础原理 主线程&#xff08;GUI线程&#xff09;&#xff1a;负责处理所有界面交互和绘制阻塞危害&#xff1a;主线程执行耗时…

maven导入spring框架

在eclipse导入maven项目&#xff0c; 在pom.xml文件中加入以下内容 junit junit 3.8.1 test org.springframework spring-core ${org.springframework.version} org.springframework spring-beans ${org.springframework.version} org.springframework spring-context ${org.s…

Windows 11 卸载 Edge

前言 咋说呢&#xff0c;Edge 确实有它好的一面&#xff0c;自带微软翻译速度可观&#xff0c;确实是 Chrome 自带翻译不可用现状下的首选 &#xff08;李玲玲你好啊&#xff09;&#xff0c;但是深度绑定微软生态&#xff0c;而且还挺重&#xff0c;使我最终放弃了使用 Edge&…

尚硅谷爬虫note001

一、模板设置 file——setting——editor——code style——file and code template——python script # _*_ coding : utf-8 _*_ # Time : ${DATE} ${TIME} # Author : 20250206-里奥 # File : ${NAME} # Project : ${PROJECT_NAME} 二、数据类型 2-1. 数字 整型int 浮点型f…

APIPark 新增 AI模型负载均衡,APIKey 资源池以及 AI Token 消耗统计等重磅功能!

开发者们好&#xff01;APIPark V1.4 功能更新给大家带来「负载均衡」、「APIKey 资源池」以及「Token 消耗统计」等重要功能&#xff0c;看看是否能帮助到大家更好地使用 AI 大模型~ V1.4 版本说明 新功能 [❤️新增] 新增支持 AI 模型负载均衡&#xff1a;同时接入多款大模…

《qt open3d网格拉普拉斯平滑》

qt open3d网格拉普拉斯平滑 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionFilterLaplacian_triggered();void MainWindow::on_actionFil