Oracle 外部表说明及简单范例
2015-10-20 15:00
351 查看
Oracle
外部表
步骤:
1. 创建测试文件external_data.dat,内容如下:
2. 使用sys用户建立逻辑目录,并给指定的用户授予权限。(要有对操作系统中该目录的读写权限,直接使用scott用户建立,提示权限不足):
SQL> create directorydbtestdir as 'E:\oracle\';
Directory created.
SQL> grant read on directory dbtestdir toscott;
Grant succeeded.
SQL> grant write ondirectory dbtestdir to scott;
Grant succeeded.
3. 将测试文件external_data.dat,移至E:\oracle\目录下。
4. 创建外部表,内容如下:
5. 查询外部表:
6. 说明:
1) 外部表是指不在数据库中的表,如操作系统上的一个按一定格式分割的文本文件或者其他类型的表,即数据在数据库的外部组织,是操作系统文件。
2) 这个外部表对于Oracle数据库来说,就好像是一张视图,在数据库中可以像视图一样进行查询等操作。
3) 这个视图允许用户在外部数据上运行任何的SQL语句,而不需要先将外部表中的数据装载进数据库中。
4) 需要注意是,外部数据表都是只读的,不能够更改。
5) 操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。
6) 不可以在上面运行任何DML
操作,不可以创建索引。
7) 可以查询操作和连接,可以并行操作。
alter table alert_log reject limit unlimited;
--告诉oracle, alert_log这个外部表行没有限制,如果不执行这条语句,下面查询的时候就会出以下错误:
ERROR:
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-30653: reject limit reached
外部表
步骤:
1. 创建测试文件external_data.dat,内容如下:
0001,hawke_test,03-OCT-11 0002,malei_test,03-OCT-11 |
SQL> create directorydbtestdir as 'E:\oracle\';
Directory created.
SQL> grant read on directory dbtestdir toscott;
Grant succeeded.
SQL> grant write ondirectory dbtestdir to scott;
Grant succeeded.
3. 将测试文件external_data.dat,移至E:\oracle\目录下。
4. 创建外部表,内容如下:
SQL> CREATE TABLEexternal_tab 2 ( 3 id varchar2(4 char), 4 name varchar2(12 char), 5 birthday date 6 ) 7 ORGANIZATIONEXTERNAL 8 ( 9 TYPE ORACLE_LOADER 10 DEFAULT DIRECTORY dbtestdir 11 ACCESS PARAMETERS 12 ( 13 RECORDS DELIMITED BYNEWLINE 14 FIELDS TERMINATED BY',' 15 ) 16 LOCATION('external_data.dat') 17 ); Table created. |
SQL> select * fromexternal_tab; ID NAME BIRTHDAY -------- -------------------------------------- 0001 hawke_test 03-10月-11 0002 malei_test 03-10月-11 |
1) 外部表是指不在数据库中的表,如操作系统上的一个按一定格式分割的文本文件或者其他类型的表,即数据在数据库的外部组织,是操作系统文件。
2) 这个外部表对于Oracle数据库来说,就好像是一张视图,在数据库中可以像视图一样进行查询等操作。
3) 这个视图允许用户在外部数据上运行任何的SQL语句,而不需要先将外部表中的数据装载进数据库中。
4) 需要注意是,外部数据表都是只读的,不能够更改。
5) 操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。
6) 不可以在上面运行任何DML
操作,不可以创建索引。
7) 可以查询操作和连接,可以并行操作。
alter table alert_log reject limit unlimited;
--告诉oracle, alert_log这个外部表行没有限制,如果不执行这条语句,下面查询的时候就会出以下错误:
ERROR:
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-30653: reject limit reached
相关文章推荐
- oracle序列的两个参数:nextval和currval简介
- oracle序列的两个参数:nextval和currval简介
- [Archive]更改ORACLE默认归档路径
- python连接oracle的模块cx_Oracle安装和配置
- Oracle动态游标
- jdbc(java连接数据库oracle)
- ORACLE 超长字符串问题的解决办法
- Oracle重建表(CTAS+rename)注意事项总结
- Sql Server远程连接数据库(相当于Oracle的dblink方式)
- Oracle 11g用exp无法导出空表的处理发布方法
- 记录下Oracle 查询节点
- Oracle的rownum原理和使用(整理几个达人的帖子)(转载)
- oracle 游标示例
- Oracle中in函数的使用
- dba,user,v$等开头的常用表和视图
- [置顶] [实验-视频过程]常用的oracle数据字典
- oracle 日期操作 汇总
- ORACLE 中的union(去重并集),union all(不去重并集),intersect(交集),minus(减集)
- ORACLE CTAS(create table as select)使用注意点
- [转]oracle性能调优之--Oracle 10g AWR 配置