定义
外部表顾名思义,存储在数据库外面的表,外部表的数据是存储在操作系统中,是操作系统文件。建立外部表的时候,不会产生段,页,簇等存储结构,只有与表相关的定义放在数据字典中,不能对外部内容进行修改(update,insert,delete),不能对外部表建立索引。不需将外部表的数据装载到数据库中来,通过 sql 解码器来访问外部表。
如何建立外部表
模式名,表名,列定义,外部表控制路径。
Create external table <表名> <表结构定义> from <控制文件路径>|<数据文件路径><参数>;
示例1:
[dmdba@localhost ~]$ cat a.txt
1,a
2,bb
3,ccc
4,dddd
[dmdba@localhost ~]$ cat a.ctl
LOAD DATA
INFILE '/home/dmdba/a.txt'
INTO TABLE EXT
FIELDS ','
SQL> create external table ext(ID INT,NAME VARCHAR(20)) from '/home/dmdba/a.ctl';
操作已执行
已用时间: 16.206(毫秒). 执行号:400.
SQL> select * from ext;
行号 ID NAME
---------- ----------- ------
1 1 a
2 2 bb
3 3 ccc
4 4 dddd
已用时间: 21.918(毫秒). 执行号:401.
示例2:
[dmdba@localhost ~]$ cat b.txt
1|2|3
4|3|2|5
1|3|4|5
6|7
SQL> create EXTERNAL TABLE ext1(c1 int, c2 int, c3 int) from datafile '/home/dmdba/b.txt' parms(fields delimited by '|');
操作已执行
已用时间: 29.765(毫秒). 执行号:500.
SQL> select * from ext1;
行号 C1 C2 C3
---------- ----------- ----------- -----------
1 1 2 3
2 4 3 2
3 1 3 4
4 6 7 NULL
已用时间: 5.803(毫秒). 执行号:501.