首页 > 代码库 > SQL*Loader之CASE1
SQL*Loader之CASE1
最近项目涉及到将文本文件中的数据导入到Oracle数据库中,故研究了下SQL*Loader,官档提供的资料不是很丰富,很多案例中出现的语句在官档中找不到出处。但它提供的案例本身却彰显出了SQL*Loader功能的强大。鉴于Oracle 11g的软件本身没有携带这些案例,需要专门到官方网站下载Oracle Database 11g Release 2 Examples,甚是麻烦。在此,将这些案例分享,也方便以后研究、借鉴。
因官方文档还没有研究完,手里还有本《Oracle SQL*Loader: The Definitive Guide》。故案例先行,理论在后。
这11个案例下载地址:http://pan.baidu.com/s/1o6Hl57G
一共有11个案例,案例基本上包括三部分,控制文件、SQL脚本、数据文件。有的没有数据文件,直接在控制文件中提供。
CASE1
1. SQL脚本
[oracle@node3 ulcase]$ cat ulcase1.sql
set termout offdrop table emp;drop table dept;create table emp (empno number(4) not null, ename char(10), job char(9), mgr number(4), hiredate date, sal number(7,2), comm number(7,2), deptno number(2));create table dept (deptno number(2), dname char(14) , loc char(13) ) ;exit
2. 控制文件
[oracle@node3 ulcase]$ cat ulcase1.ctl
-- NAME-- ulcase1.ctl - SQL*Loader Case Study 1: Loading Variable-Length Data---- DESCRIPTION-- This case study demonstrates the following:---- A simple control file identifying one table and three columns-- to be loaded.---- Including data to be loaded from the control file itself, so-- there is no separate datafile.---- Loading data in stream format, with both types of delimited-- fields: terminated and enclosed.---- NOTES ABOUT THIS CONTROL FILE-- The LOAD DATA statement is required at the beginning of the-- control file.---- INFILE * specifies that the data is found in the control file-- and not in an external file.---- The INTO TABLE statement is required to identify the table to-- be loaded (dept) into. By default, SQL*Loader requires the-- table to be empty before it inserts any records.---- FIELDS TERMINATED BY specifies that the data is terminated by-- commas, but may also be enclosed by quotation marks. Datatypes-- for all fields default to CHAR.---- The names of columns to load are enclosed in parentheses.-- If no datatype or length is specified and the field is delimited-- with ENCLOSED BY or with TERMINATED BY, then the default-- datatype is CHAR and the default length is 255. If ENCLOSED BY-- or TERMINATED BY is not specified, then the default type is CHAR-- and the default length is 1.---- BEGINDATA specifies the beginning of the data.--LOAD DATAINFILE *INTO TABLE DEPTFIELDS TERMINATED BY ‘,‘ OPTIONALLY ENCLOSED BY ‘"‘(DEPTNO, DNAME, LOC)BEGINDATA12,RESEARCH,"SARATOGA"10,"ACCOUNTING",CLEVELAND11,"ART",SALEM13,FINANCE,"BOSTON"21,"SALES",PHILA.22,"SALES",ROCHESTER42,"INT‘L","SAN FRAN"
执行后结果:
[oracle@node3 ulcase]$ sqlplus scott/tiger @ulcase1.sql
[oracle@node3 ulcase]$ sqlldr userid=scott/tiger control=ulcase1.ctl
SQL> select * from dept; DEPTNO DNAME LOC---------- -------------- ------------- 12 RESEARCH SARATOGA 10 ACCOUNTING CLEVELAND 11 ART SALEM 13 FINANCE BOSTON 21 SALES PHILA. 22 SALES ROCHESTER 42 INT‘L SAN FRAN7 rows selected.
SQL*Loader之CASE1
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。