南大通用 GBase 8s 中的外部表创建与应用

原文链接:www.gbase.cn/community/p...

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

本文将详细介绍 GBase 8s 中外部表的创建方法、应用场景以及一些实用的操作示例,希望能帮助数据库用户和开发人员更好地理解和使用这一功能,提升数据处理效率。

概述

"外部表"(External Table)通常是指一种特殊类型的表,可以理解为数据库表与数据文件的交互表,它允许数据库管理员访问存储在数据库之外的数据文件。外部表主要用于读取操作,外部表本身并不支持直接的插入、删除或更新操作。

创建外部表语法

创建外部表的基本语法图如下:

列定义语法图如下:

创建外部表

在 GBase 8s 中,创建外部表的基本语法如下:

sql 复制代码
create external table ext_01(id int,col1 varchar(100)) using (datafiles('DISK:\tmp\file.txt'),format "delimited",delimiter "|");
  • DATAFILES:用于指定数据文件位置,支持多种格式如txt、unl、dat等。
  • FORMAT:定义如何读取外部文件的数据,delimited(分隔符格式)、Fixed(固定宽度格式)。
  • DELIMITER:指定分隔符格式,|、&、@等。

除以上常用参数,还有REJECTFILE、DBMONEY等,可按需使用。

* file.txt文件数据变化时,外部表ext_01同步数据变化。

* 无法直接向ext_01插入、修改、更新数据,支持insert select向外部表导入数据表数据。

* 每次执行向外部表导入数据表数据时,进行覆盖导入而不是追加。

示例1:create external table......

sql 复制代码
--数据准备
CREATE TABLE Users (
   id INT AUTO_INCREMENT,
   age INT NOT NULL,
   name VARCHAR(100) NOT NULL,
   PRIMARY KEY (id)
);
INSERT INTO Users (id, age, name) VALUES (1, 25, '张三');
INSERT INTO Users (id, age, name) VALUES (2, 30, '李四');
INSERT INTO Users (id, age, name) VALUES (3, 22, '王五');

--创建外部表exttab
> create external table exttab
       (id int,
        col1 varchar(100))
        using (
        datafiles('DISK:file.txt'),
        format "delimited",
        delimiter "|");

Table created.

Elapsed time: 0.033 sec

--向file.txt卸载数据
insert into extab select id,name from users;

--查看extab数据
> select * from ext_01;


ID    2
COL1  李四

ID    3
COL1  王五

ID    1
COL1  张三

3 row(s) retrieved.

--查看file.txt文件数据
[root@centos78 server]# cat file.txt
2|李四|
3|王五|
1|张三|

示例2:select into external table

sql 复制代码
--创建外部表并导入users表数据
> select * from users into external tab0001_ext using(datafiles('DISK:/tmp/file.unl'),format "delimited",delimiter "|");

3 row(s) retrieved into table.

Elapsed time: 0.045 sec

--查看外部表数据
> select * from tab0001_ext;

id    2
age   30
name  李四

id    3
age   22
name  王五

id    1
age   25
name  张三

3 row(s) retrieved.

Elapsed time: 0.052 sec

--查看导出的文件数据
[root@centos78 server]# cat /tmp/file.unl
2|30|李四|
3|22|王五|
1|25|张三|

示例3:基于已有表创建外部表,SAMEAS 。

  • 固定格式的文件不能使用 SAMEAS 子句。
  • 新定义的表继承源表的所有的列名称及其数据类型。
  • 数据库表中列上的检查约束不会为外部表继承,但NOT NULL 约束会被外部表继承。
sql 复制代码
> CREATE TABLE Employees (
   deptid INT PRIMARY KEY,
   deptno VARCHAR(20) NOT NULL,
    deptname VARCHAR(100) NOT NULL,
   empname VARCHAR(100) NOT NULL,
    CONSTRAINT chk_empname CHECK (empname IS NOT NULL)
);

--基于源表Employees 创建外部表
> create external table ext_tab
       sameas Employees
        using (
        datafiles('DISK:/tmp/file2.txt'),
        format "delimited",
        delimiter "|");> > > > >

Table created.

Elapsed time: 0.035 sec

> desc ext_tab;


Column name          Type                                    Nulls

DEPTID               INTEGER                                 no
DEPTNO               VARCHAR(20,0)                           no
DEPTNAME             VARCHAR(100,0)                          no
EMPNAME              VARCHAR(100,0)                          no
Elapsed time: 0.161 sec

外部表的优势

1. 高效的数据交互: 外部表能够实现数据库与外部数据文件之间的快速交互,提高了数据处理的效率,减少了数据传输的时间和成本。

2. 节省存储空间: 与将外部数据直接导入到数据库中相比,外部表不需要在数据库中存储数据副本,从而节省了存储空间,降低了存储成本。

3. 灵活性高: 外部表支持多种数据文件格式和读取方式,用户可以根据实际需求灵活地选择合适的数据文件格式和分隔符,满足不同的应用场景。

4. 易于管理和维护: 通过外部表,用户可以方便地管理和维护外部数据文件,无需直接操作数据库,降低了管理难度和维护成本。

以上外部表创建的简单介绍,感谢您对 GBase 8s 的关注和支持,如果您在使用过程中遇到任何问题或需要进一步的帮助,欢迎随时与我们联系。

原文链接:www.gbase.cn/community/p...

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

相关推荐
白鲸开源1 小时前
(二)从分层架构到数据湖仓架构:数据仓库分层下的技术架构与举例
大数据·数据库·数据分析
好玩的Matlab(NCEPU)1 小时前
Redis vs RabbitMQ 对比总结
数据库·redis·rabbitmq
21号 11 小时前
16.MySQL 服务器配置与管理
服务器·数据库·mysql
我的offer在哪里1 小时前
MongoDB
数据库·mongodb
练习时长一年3 小时前
AI开发结构化输出
数据库
IvorySQL3 小时前
灾难恢复工具内核细节探究与分享
数据库·postgresql·开源
lypzcgf3 小时前
商城小程序数据库表结构文档
数据库·小程序·电商
jjw_zyfx3 小时前
Ubuntu上vue3 vite使用MBTiles搭建地图服务器
服务器·数据库·ubuntu
EndingCoder4 小时前
Node.js SQL数据库:MySQL/PostgreSQL集成
javascript·数据库·sql·mysql·postgresql·node.js
静听山水5 小时前
SQLite
数据库·sqlite