关于外部表的使用

      oracle为我们提供了管理外部文件的方法,即改文件不占据数据库的空间实际上是在OS文件系统中存在的,因此对于外部表不能建表定义以外的任何东西,包括索引,主键,约束等等,因为这些是要占据数据库存储空间的。

       建立外部表主要分三步操作:

1.建立目录

CREATE OR REPLACE DIRECTORY dir_ext_table AS 'E:/外部表';

2.授予权限,如果是当前用户不用授于读写权限,因为要在该目录下生成log文件,读当然就不用说了。

GRANT READ ,WRITE ON DIRECTORY dir_ext_table TO scott;

  这里假设当前用户不是scott,否则会报错,不能给自己grant or revoke 。

3.建表:

CREATE TABLE t_ext_telebook(NAME VARCHAR2(20),tele_number VARCHAR2(100))
        ORGANIZATION external(
        TYPE oracle_loader DEFAULT DIRECTORY dir_ext_table
        ACCESS PARAMETERS(
        RECORDs delimited BY NEWLINE
        fields terminated  BY ','
        missing field VALUES are NULL(NAME,tele_number)
        )
        LOCATION('telebook.txt')
        );

      4.后期更改:

        4.1 修改该外部表的默认工作目录:

               alter table t_ext_telebook default directory new_directory;

        4.2 修改字段的分隔字符:

                alter table t_ext_telebook access parameters(fields terminated by ';');

        4.3 修改加载文件列表:

               alter table t_ext_telebook location('telebook.txt','telebook2.txt');

               注意这里要求列表中的文件具有完全相同的的组织格式。

      5. 附加:

        我的telebook的文件的内容是这样组织的:

           谢龙,1590339346012
           黄云增,1590339679565

      6.常见问题:

        6.1 外部文件不建议有表头,因为外部表会认为表头是一条记录,如果存在表头,但是表头不是按指定格式组织的话,在查询时会报错。

        6.2 注意你定义的外部表的各个字段的长度,如果你在OS中的文件的某一个字段大于在数据库中定义的字段,同样会报错。

        6.3 如果不知道是什么原因造成的错误,到操作系统对应目录下查看日志文件相信会有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值