zoukankan      html  css  js  c++  java
  • 外部表1(简单测试)

    外部表,是指不存在于数据库中的表。通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件(如EXCEL、CSV、DAT或TXT文件)当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问。外部表是对数据库表的延伸。
    1、使用sys用户建立逻辑目录,并给指定的用户授予权限。

    (要有对操作系统中该目录的读写权限,直接使用scott用户建立,提示权限不足):

    SQL> create directory testDir1 as 'D:oracletest	estDir';
    Directory created
    ====授权
    SQL> grant read on directory testDir1 to scott;
    Grant succeeded
    
    SQL> grant write on directory testDir1 to scott;
    Grant succeeded

    ===============
    2、准备数据文件:
    将测试数据文件testEmp.txt文件放在D:oracletest estDir目录下。文件内容:

    7369 SMITH CLERK
    7499 ALLEN SALESMAN
    7521 WARD SALESMAN
    7566 JONES MANAGER
    7654 MARTIN SALESMAN
    7698 BLAKE MANAGER
    7782 CLARK MANAGER
    7788 SCOTT ANALYST
    7839 KING PRESIDENT
    7844 TURNER SALESMAN
    7876 ADAMS CLERK
    7900 JAMES CLERK
    7902 FORD ANALYST
    7934 MILLER CLERK

    3、创建外部表testExtEmp

    SQL> create table testExtEmp(
    2 empno number(4),ename varchar2(10),job varchar2(9))
    3 organization external (
    4 type oracle_loader --数据转换驱动器,oracle_loader为默认,也可以改换其他,如oracle_datapump
    5 default directory testDir1 --指定外部表所在目录
    6 access parameters (fields terminated by whitespace)
    7 location('testEmp.txt') --指定数据文件
    8 );
    Table created

    4、查询外部表:

    SQL> select * from testExtEmp;
    EMPNO ENAME JOB
    ----- ---------- ---------
    7369 SMITH CLERK
    7499 ALLEN SALESMAN
    7521 WARD SALESMAN
    7566 JONES MANAGER
    7654 MARTIN SALESMAN
    7698 BLAKE MANAGER
    7782 CLARK MANAGER
    7788 SCOTT ANALYST
    7839 KING PRESIDENT
    7844 TURNER SALESMAN
    7876 ADAMS CLERK
    7900 JAMES CLERK
    7902 FORD ANALYST
    7934 MILLER CLERK
    14 rows selected

    5、说明
    1) 外部表是指不在数据库中的表,如操作系统上的一个按一定格式分割的文本文件或者其他类型的表,即数据在数据库的外部组织,是操作系统文件。
    2) 这个外部表对于Oracle数据库来说,就好像是一张视图, 在数据库中可以像视图一样进行查询等操作。
    3) 这个视图允许用户在外部数据上运行任何的SQL语句,而不需要先将外部表中的数据装载进数据库中。
    4) 需要注意是,外部数据表都是只读的,不能够更改。
    5) 操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。
    6) 不可以在上面运行任何 DML 操作,不可以创建索引。
    7) 可以查询操作和连接,可以并行操作。

  • 相关阅读:
    [编织消息框架][设计协议]bit基础
    android studio最简单的包名修改方法
    MySQL之四——浅谈 DML、DDL、DCL的区别
    MySQL之三——SQL优化
    MySQL之二——MySQL缓存机制
    MySQL之一——基础语法详解
    游戏测试相关内容
    第一篇博客
    mybatis中union可以用if判断连接,但是<select>中第一个select语句不能被if判断,因此可以从dual表中查询null来凑齐。union如果使用order by排序,那么只能放在最后一个查询语句的位置,并且不能带表名。
    博客园
  • 原文地址:https://www.cnblogs.com/rusking/p/4136315.html
Copyright © 2011-2022 走看看