数据来源于外部操作系统文本文件: 当需要处理的数据存储在外部操作系统的文本文件中,且希望在数据库中以表的形式进行查询和分析时,可建立外表。例如,将存储在服务器上的日志文件或其他数据文件作为数据库的外部数据源进行关联操作。
数据只读不允许增删改: 若对某些数据仅需进行查询操作,不涉及数据的插入、删除和修改,且数据本身不适合或不需要存储在数据库内部的常规表结构中,可通过建立外表来实现高效的数据访问。
指定数据文件创建外表
语法格式:CREATE EXTERNAL TABLE [schema.]table_name(column_definition) FROM DATAFILE DEFAULT DIRECTORY directory_name LOCATION (‘data_file_name’) [parms (parameter_value)]
参数说明
schema:指定模式名,若不指定则为当前用户模式。
table_name:要创建的外表名称。
column_definition:定义外表列的名称、数据类型等信息,与普通表的列定义类似。
DEFAULT DIRECTORY:指定默认目录,用于存储数据文件,需先创建并授予用户读写权限。
LOCATION:指定数据文件的名称或通配符模式。
parms:可选参数,用于指定数据文件的格式等属性,如FIELDS DELIMITED BY <表达式>(字段分隔符)、RECORDS DELIMITED BY <表达式>(记录分隔符)、ERRORS(错误处理)、BADFILE ‘<错误日志文件名称>’(错误数据记录文件)、LOG ‘<日志文件名称>’(操作日志文件)、NULL_STR <字符串>(指定空值字符串)、SKIP <跳过行数>(跳过文件开头的行数)、CHARACTER_CODE <文件字符集>(指定文件字符集)。
示例
CREATE EXTERNAL TABLE t_extemp
(
"EMPLOYEE_ID" INT,
"EMPLOYEE_NAME" VARCHAR(20),
"IDENTITY_CARD" VARCHAR(18),
"EMAIL" VARCHAR(50),
"PHONE_NUM" VARCHAR(20),
"HIRE_DATE" DATE,
"JOB_ID" VARCHAR(10),
"SALARY" INT,
"COMMISSION_PCT" INT,
"MANAGER_ID" INT,
"DEPARTMENT_ID" INT
)
FROM DATAFILE DEFAULT DIRECTORY DIR_DATA LOCATION ('DMHR_EMPLOYEE.txt')
parms (fields DELIMITED by '|', records DELIMITED by 'x0a', skip 1, character_code 'UTF-8');
指定控制文件创建外表
编写控制文件:控制文件包含数据文件的路径、格式等信息,以及可选的参数设置,格式如下:
options
(skip=1
errors=10
log='t_extdept.log'
character_code='UTF-8')
load data
infile 'DMHR_DEPARTMENT.txt' str X '0d0a'
badfile 't_extdept.bad'
into table t_extdept
fields '|'
基于控制文件创建外表
CREATE EXTERNAL TABLE t_extdept
(
"DEPARTMENT_ID" INT,
"DEPARTMENT_NAME" VARCHAR(30),
"MANAGER_ID" INT,
"LOCATION_ID" INT
)
from DEFAULT DIRECTORY DIR_DATA LOCATION ('dept.ctl');
整合外部数据资源:方便将不同来源、不同格式的外部数据与数据库内部数据进行整合,实现统一的查询和分析。例如,将业务系统生成的日志文件作为外表与数据库中的用户表关联,分析用户行为与系统操作记录之间的关系。
提高数据处理灵活性:对于不适合存储在数据库内部表的大规模数据或临时数据,通过建立外表可以在不改变数据库内部结构的情况下进行数据处理。比如,在进行数据分析项目时,可直接将原始数据文件创建为外表,避免数据导入导出的繁琐过程,提高分析效率。
实现数据共享与交换:在不同系统或数据库之间进行数据共享时,外表提供了一种简单有效的方式。例如,一个企业的多个部门使用不同的数据库系统,通过建立外表可以使一个部门的数据库访问另一个部门的数据文件,实现数据的共享和交互。
文章
阅读量
获赞