创建外部表步骤

引用博文:https://blog.csdn.net/zhou920786312/article/details/72799697?utm_source=itdadao&utm_medium=referral

外部表 
1外部表是可以读取存储在操作系统下,文件系统中的数据的一种只读表 
2外部表的数据可以存储在oracle数据库外部的操作系统文件中,oracle数据库可以读取这些数据,但是不能修改。 
3使用oracle的外部表可以很容易的将一个格式化的文本文件虚拟成数据库的表,并且可以使用select语句去访问。

创建外部表 
案例

create table student5( 
id NUMBER(5), 
name VARCHAR(12), 
sex VARCHAR(8), 
age NUMBER(3), 
grand NUMBER(1) 
)organization external( 
type oracle_loader 
default directory external_student 
access parameters( 
fields terminated by ‘,’ ) 
location (‘student.csv’) 
);

organization external:用来设置外部表的选项 
type :指定访问外部表数据文件时,所使用的访问区段程序。这个区段程序可以将文件格式转换为服务器可以接受的格式 
oracle_loader:访问区段程序,默认使用这个 
default directory:指定访问目录,告诉数据库外部文件存放的位置 
external_student:目录名 
access parameters:指定区段程序访问外部数据文件时,进行转换的参数设置。 
fields terminated by:制定分割符 
location :指定访问的文件

创建外部表步骤 
1创建外部文件 
这里写图片描述
2创建文件目录 
create directory external_student as ‘F: estexternalTable’; 
这里写图片描述 
3创建表

create table student5(
     id              NUMBER(5),
     name            VARCHAR(12),
     sex             VARCHAR(8),
     age             NUMBER(3),
     grand           NUMBER(1)
)organization external(
            type oracle_loader
            default directory external_student
            access parameters(
            fields terminated by ',' )    
            location ('student.csv')
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这里写图片描述 
4验证

问题

SQL> select * from student5;
select * from student5
*
第 1 行出现错误:
ORA-29913: 执行 ODCIEXTTABLEFETCH 调出时出错
ORA-30653: 已达到拒绝限制值

解决
建表最后添加 reject limit unlimited;
 create table student5(
      id              NUMBER(5),
      name            VARCHAR(12),
      sex             VARCHAR(8),
      age             NUMBER(3),
      grand           NUMBER(1)
 )organization external(
             type oracle_loader
             default directory external_student
             access parameters(
                    fields terminated by ',' )
             location ('student.csv')
 )
 reject limit unlimited;
验证
SQL> select * from student5;

未选定行
解决:表的数据结构不对
student.csv修改为这样
1,lia,男,16,1001
2,lib,男,17,1001
3,lic,男,18,1001
4,lid,男,19,1001
5,lie,男,20,1001

验证
SQL> select * from student5;
未选定行

解决:
因为 grand NUMBER(1),所以我们将1001改为1

验证
 select * from student5;

    ID NAME         SEX             AGE      GRAND
------ ------------ -------- ---------- ----------
     1 lia          男               16          1
     2 lib          男               17          1
     3 lic          男               18          1
     4 lid          男               19          1
     5 lie          男               20          1
原文地址:https://www.cnblogs.com/hand-lzs/p/9550780.html