关于外部表
Oracle 数据库允许您对外部表中的数据进行只读访问。外部表定义为不驻留在数据库中的表,通过向数据库提供描述外部表的元数据,数据库能够公开外部表中的数据,就好像它是驻留在常规数据库表中的数据一样。可以使用SQL直接和并行查询外部数据。
外部表特点
- 可以选择、联接或排序外部表数据。还可以为外部表创建视图和同义词。但是,不能对外部表执行 DML 操作(、 或 ),也不能创建索引。
- 无需先将外部数据加载到数据库中。
- 不支持虚拟列
创建外部表
建表语法:
CREATE TABLE xxx ( 字段名 字段类型) ORGANIZATION EXTERNAL (TYPE xxx DEFAULT DIRECTORY xxx ACCESS PARAMETERS( ACCESS PARAMETERS 参数 ) LOCATION ('test1.txt') ) REJECT LIMIT UNLIMITED;
在Oracle中,可以使用外部表的ACCESS PARAMETERS子句来指定访问外部数据文件的参数。以下是一些常用的 ACCESS PARAMETERS 参数选项:
- RECORDS DELIMITED BY:指定记录之间的分隔符。常见的选项包括NEWLINE(默认,表示使用换行符分隔记录)和CHAR(字符)(使用指定字符分隔记录)。
- FIELDS TERMINATED BY:指定字段之间的分隔符。常见的选项包括逗号,、制表符\t等。
- MISSING FIELD VALUES:指定用于表示缺失字段值的占位符。常见的选项包括ARE NULL(表示缺失字段值为NULL)和DEFAULT value(使用指定的默认值作为缺失字段值)。
- SKIP n: 指定跳过前n行。例如,SKIP 1表示跳过第一行。
- BADFILE 'filename':指定一个用于存储无法加载到表中的行的坏文件(bad file)。这些行可能不符合定义的格式或条件。
- LOGFILE 'filename':指定一个用于记录外部表加载过程的日志文件。
- RECORDS DELIMITED BY NEWLINE CHARACTERSET UTF8 :指定字符为 UTF-8 / ZHS16GBK。
- OPTIONALLY ENCLOSED BY '"':选项用于指定包围字段值的可选字符。
ACCESS PARAMETERS
(
records delimited by newline
badfile admin_bad_dir:'empxt%a_%p.bad'
logfile admin_log_dir:'empxt%a_%p.log'
fields terminated by ','
missing field values are null
( employee_id, first_name, last_name, job_id, manager_id,
hire_date char date_format date mask "dd-mon-yyyy",
salary, commission_pct, department_id, email
)
)
LOCATION可指定多个文件,如 LOCATION ('empxt1.txt', 'empxt2.txt')
更改外部表
外部表的更改表子句
更改表子句 | 描述 | 例 |
---|---|---|
|
更改拒绝限制。默认值为 。 |
ALTER TABLE admin_ext_employees |
|
确定访问驱动程序如何验证后续查询中的行:
|
ALTER TABLE admin_ext_employees ALTER TABLE admin_ext_employees |
|
更改默认目录规范 |
ALTER TABLE admin_ext_employees |
删除外部表
与普通表删除一样,使用 drop table xxxx;