暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM外部表介绍

原创 💨 狒狒啊 2023-11-28
250

外部表

1. 语法






(注:

外部基表不能存在大字段列;

外部基表不能为临时表,不能建立分区;

外部基表是只读的,不存在表锁,不允许任何针对外部表的增删改数据操作,不允许TRUNCATE外部表操作。)

2. 示例

实验一】 

指定操作系统的一个文本文件作为数据文件,编写控制文件及建表语句。

编写数据文件(/opt/dm8/data/data.txt),首行数据如下:

a|abc|varchar_data|12.34|12.34|12.34|12.34|0|1|1|1234|1234|1234|10

0|11|1234|1|1|14.2|12.1|12.1|1999-10-01|9:10:21|2002-12-12|15

编写控制文件(/opt/dm8/data/ctrl.txt)如下

INFILE '/opt/dm8/data/data.txt'INTO TABLE EXT

FIELDS '|'

 

建表语句: 

 

DROP TABLE EXT;

CREATE EXTERNAL TABLE EXT (

L_CHAR CHAR(1),

L_CHARACTER CHARACTER(3),

L_VARCHAR VARCHAR(20),

L_NUMERIC NUMERIC(6,2),

L_DECIMAL DECIMAL(6,2),

L_DEC DEC(6,2),

L_MONEY DECIMAL(19,4),

L_BIT BIT,

L_BOOL BIT,

L_BOOLEAN BIT,

L_INTEGER INTEGER,

L_INT INT,

L_BIGINT BIGINT,

L_TINYINT TINYINT,

L_BYTE BYTE,

L_SMALLINT SMALLINT,

L_BINARY BINARY,

L_VARBINARY VARBINARY,

L_FLOAT FLOAT,

L_DOUBLE DOUBLE,

L_REAL REAL,

L_DATE DATE,

L_TIME TIME,

L_TIMESTAMP TIMESTAMP,

L_INTERVAL INTERVAL YEAR

)FROM '/opt/dm8/data/ctrl.txt';

 

系统执行建表语句后,就在数据库中建立了相应的外部基表。查询 ext_table 表: SELECT * FROM EXT;


(注:外部表只是创建的元数据,一旦将控制文件或数据文件删除之后,数据不能正常查询。)

 

实验二】 

指定操作系统的一个文本文件作为数据文件(/opt/dm8/data/data2.txt)

数据如下:

10|9|7

4|3|2

 

建表语句: 

create external table ext_table2(c1 int,c2 int,c3 int) from datafile '/opt/dm8/data/data2.txt' parms(fields delimited by '|');

 

查询结果: 

 

select * from ext_table2;

行号 C1 C2 C3

---------- ----------- ----------- -----------

1 10 9 7

2 4 3 2

 

实验三】 

 

编写控制文件(/opt/dm8/data/quan.ctrl) 

 

内容如下:

 

OPTIONS(

DATA = '/opt/dm8/data/quan.txt'

ERRORS = 5

BADFILE = '/opt/dm8/data/t1.bad'

LOG = '/opt/dm8/data/t1.log'NULL_STR = ' ffff '

SKIP = 0

CHARACTER_CODE = 'utf-8' )

LOAD DATA

INFILE '/opt/dm8/data/quan.txt'

BADFILE '/opt/dm8/data/quan.bad'

INTO TABLE fldr1

FIELDS TERMINATED BY '||'

编写数据文件(/opt/dm8/data/quan.txt)如下: 

1||ab||2

1||ab||1 

 

建表语句: 

 

CREATE EXTERNAL TABLE fldr1

(

"C1" NUMBER(2,1),

"C2" VARCHAR(4),

"C3" NUMBER(2,0))

FROM '/opt/dm8/data/quan.ctrl'; 

 

查询表 fldr1 中的数据

select * from fldr1;

行号 C1 C2 C3

---------- --- -- --

1 1.0 ab 2

2 1.0 ab 1

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论