oracle 外部表

简单的样例告诉你如何使用外部表

 

1、外部表概述

外部表只能在Oracle 9i之后来使用。简单地说,外部表,是指不存在于数据库中的表。通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问。外部表是对数据库表的延伸。

注:感觉说了一堆也不通俗易懂。

 

2、外部表能干什么

     比如你有一个excle文件,现在需要你对这些数据进行统计分析,是不是有点麻烦这些数据如果在数据库里就好了,什么统计查询,就是几条sql语句的事。外部表就是把这种文件变得可以查询数据库普通表那样查询这些数据。

实际工作中总是有些excle或者其他格式的数据要导入数据库进行统计分析,怎么导入这些数据写java代码有点麻烦,我更喜欢只操作数据就搞定。

例如:咱们现在有一个excle文件内容是这样的,如何把他变成数据库里的表呢?

 

3、excle变成数据库的表

  (1)用excle把这个表另存为1.csv

             csv的本质就是","号隔开的字段如:

 

 (2)在数据库中创建一个路径并赋权限给指定的用户

1
2
3
create directory dbycdir as '/u01/app/oracle/product/11.2.0/db_1';
grant read on directory dbycdir to yc;
grant write on directory dbycdir to yc;

(3)将1.csv文件拖到/u01/app/oracle/product/11.2.0/db_1路径下

(4)用yc用户登录数据库创建外部表

   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE TABLE WB_T
 (
      CODE                         VARCHAR2(60 BYTE),     --代码                                                                                                       
      NAME                         VARCHAR2(60 BYTE)      --名称                                                                                                                                      
 )
  ORGANIZATION EXTERNAL
   ( TYPE ORACLE_LOADER   --指定外部表的访问方式,9i不支持oracle_datapump
     DEFAULT DIRECTORY   dbycdir --目录
     ACCESS PARAMETERS
     (
     RECORDS
          DELIMITED BY NEWLINE characterset zhs16gbk
          SKIP 1    --表示跳过第一行,因为第一行是标题栏
     fields
          terminated by ','  --表示字段之间的分割标识
          LRTRIM
          MISSING FIELD VALUES ARE NULL REJECT ROWS WITH ALL NULL FIELDS
   )
     LOCATION
      '1.csv'  --数据从那个文件来
      )
   )
;

 (5)ok了现在用yc登录数据查询WB_T表

 

 

注:普通表存在表空间对应的数据文件里,而外部表的数据就存在你指定的文件里,上述例子中数据就存在1.csv中,如果你在操作系统里1.csv删除数据就没有了。

                                                     

        

 

 

 

 

    

 

资源丰富的的网盘资源:网盘资源大全! 推荐一个适合零基础学习SQL的网站:不用安装数据库,在线轻松学习SQL!
posted @   万笑佛  阅读(375)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示