南大通用 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技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

相关推荐
经典199227 分钟前
mysql 锁介绍
数据库·mysql
不太可爱的大白28 分钟前
Mysql分片:一致性哈希算法
数据库·mysql·算法·哈希算法
~ 小团子29 分钟前
每日一SQL 【游戏玩法分析 IV】
数据库·sql·游戏
零叹33 分钟前
MySQL——常用程序and主从复制
数据库·mysql
胚芽鞘6815 小时前
关于java项目中maven的理解
java·数据库·maven
sun0077008 小时前
mysql索引底层原理
数据库·mysql
workflower11 小时前
MDSE和敏捷开发相互矛盾之处:方法论本质的冲突
数据库·软件工程·敏捷流程·极限编程
Tony小周11 小时前
实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
开发语言·数据库·qt
lifallen11 小时前
Paimon 原子提交实现
java·大数据·数据结构·数据库·后端·算法
TDengine (老段)11 小时前
TDengine 数据库建模最佳实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据