Oracle写入外部表的快捷方法(Oracle写入外部表)
Oracle写入外部表的快捷方法
在Oracle数据库中,外部表是一种特殊类型的表,它的数据源来自于文件或者其他数据源,而不是数据库的内部表。外部表具有许多优点,如可以方便地对海量数据进行批量操作,可以节省数据库的空间,可以避免数据冗余等等。而且在Oracle数据库中,我们可以使用快捷的方法来写入外部表,下面我们就来介绍一下具体的写入外部表的快捷方法。
一、创建外部表
在Oracle数据库中我们需要先创建一张外部表,这个表的结构需要和我们要输入的数据源保持一致。外部表可以使用CREATE TABLE语句来创建,例如:
CREATE TABLE emp_ext (
empno NUMBER(4), ename VARCHAR2(10),
job VARCHAR2(9), mgr NUMBER(4),
hiredate DATE, sal NUMBER(7,2),
comm NUMBER(7,2), deptno NUMBER(2)
)ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY test_dir ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ',' MISSING FIELD VALUES ARE NULL
( empno,
ename, job,
mgr, hiredate CHAR(14) DATE_FORMAT 'yyyy-mm-dd hh24:mi:ss',
sal, comm,
deptno )
) LOCATION ('emp.txt')
)REJECT LIMIT UNLIMITED;
在这个例子中,我们创建了一张名为EMP_EXT的外部表,它的结构和我们要输入的数据源一致。这张表的数据源是一个名为EMP.TXT的文件,需要从DIRECTORY为TEST_DIR的目录中读取,每一行记录以换行符为分隔符,每个字段之间以逗号为分隔符。同时,我们还可以在ACCESS PARAMETERS中指定一些其他的参数,比如缺失值的处理方式等等。
二、写入外部表
有了外部表之后,我们就可以开始写入数据了。Oracle提供了很多种写入外部表的方法,其中最常用的方法是Oracle SQL*Loader。SQL*Loader是Oracle提供的一个工具,可以把数据从纯文本文件中读入Oracle数据库,其使用方法如下:
1.创建一个控制文件,指定如何读取外部数据文件,例如:
load data
infile 'emp.txt'into table emp_ext
fields terminated by ","(empno,ename,job,mgr,hiredate date 'yyyy-mm-dd hh24:mi:ss',sal,comm,deptno)
2.运行SQL*Loader,执行控制文件,例如:
sqlldr username/password control=emp.ctl log=emp.log bad=emp.bad
在这个例子中,我们使用EMP.CTL文件作为SQL*Loader的控制文件,这个文件的作用是指定如何读取EMP.TXT文件的数据,并把它们插入到EMP_EXT表中。EMP.CTL文件中的每一个字段包含从EMP.TXT文件读取到的值,并将其与外部表EMP_EXT的每个字段匹配。我们还可以使用SQL*Loader的相关参数来控制输出信息的格式等等。
三、总结
在Oracle数据库中,使用外部表可以提高批量读写操作的效率,避免数据冗余,节省数据库的空间。而在写入外部表的过程中,SQL*Loader是最常用的工具,通过创建控制文件,指定读取数据文件的方式,然后运行SQL*Loader即可向外部表快捷地写入数据。