图 6. 导入所选择的表
Oracle - SQL Loader
SQL Loader 是 Oracle 提供的一个实用程序,用以将外部文件装入 Oracle 数据库。我们认为 SQL Loader 比 imp 更强大、更灵活。SQL Loader 可以筛选进行装入的数据,同时允许装入用于修改数据的 Oracle SQL 函数。除了变量、定长数据和流式数据以外,它还可以装入面向对象的数据、LOB 数据和集合。
装入方式有两种:常规路径和直接路径。从 Oracle 9i 开始,最快的方法就是使用外部表(具有并行性和直接插入)。通过外部表,您可以发出一条 SQL SELECT 语句来装入文件内容。
清单 2 中显示了 Oracle SQL Loader 的语法。注意,您可以通过在命令提示符处发出 sqlldr 命令来获得完整的语法。
SQLLDR keyword=value [,keyword=value,...] where keywords are userid -- ORACLE username/password control -- Control file name log -- Log file name bad -- Bad file name data -- Data file name discard -- Discard file name discardmax -- Number of discards to allow (Default all) skip -- Number of logical records to skip (Default 0) load -- Number of logical records to load (Default all) errors -- Number of errors to allow (Default 50)
调用 SQL Loader 的方法只有一种,就是通过使用命令行来进行。为了使用 SQL Loader,您需要一个控制文件。 该控制文件就是 SQL Loader 的“大脑”,提供文件位置、格式、插入目标,等等。控制文件是一种不区分大小写、格式自由的文本文件,其中定义了特殊参数。
下列清单展示了一些使用 SQL Loader 的例子。
- 装入定长记录
发出命令:
清单 3. 定长数据示例,Course.datsqlldr userid=scott/tiger log=course.log control=course.ctl。CS3121Theory of Computation I F Vari Hall***** CS3122Theory of Computation II W Norman Bethune CS4101Computer Robotics ****** W Stong College* CS4102Computer Graphics ****** W Earth Science* CS4120Advanced Relational **** F Winter College清单 4. Course.ctlLOAD DATA INFILE 'course.dat' "fix 49" BADFILE 'course.bad' Insert INTO TABLE Course (courseid position (1:6) char, coursetitle position (7:30) char, term position (32:32) char, location position (34:47) char) - 装入变长记录
发出命令:
清单 5. 变长数据示例,Emp.datsqlldr scott/tiger control=emp.ctl, log=emp.log。1234, "Allan", "IT Specialist", 2345, "April-15-2002", 15000, 3000, 88 2345, Lily Ng, "HR", 7766, Jan-12-2000, 9000, 2000, 55 3456, "Odelia", "Fun", 8899, "June-11-2001", 8000,1000, 77 4567, "Titus", Fun, 6655,"Aug-03-2005", 5000,200, 76 5678, "Timothy", Sales, 7788, Aug-99-2005", 4000, 2000, 11清单 6. Emp.ctlLOAD DATA INFILE 'emp.dat' -- emp.dat is the input file BADFILE 'emp.bad' -- bad file DISCARDFILE 'emp.dsc' -- discard file DISCARDMAX 2 -- Max discards allowed before load terminates APPEND INTO TABLE emp FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' -- terminated by comma. Allow double quote (empno, ename, job, mgr, hiredate date(30) "Month-DD-YYYY", sal, comm, deptno)
- 装入多个表
发出命令:
清单 7. 变长数据示例,EmpOrig.datsqlldr scott/tiger control=mul.ctl, log=multables.log。7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30清单 8. Mul.ctlLOAD DATA INFILE emporig.dat BADFILE multables.bad DISCARDFILE multables.dsc APPEND INTO TABLE emp1 when empno<>'7788' FIELDS TERMINATED BY X'2c' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (empno POSITION(1:4) INTEGER EXTERNAL, ename POSITION(7:12) INTEGER EXTERNAL) INTO TABLE emp2 when job = 'CLERK' FIELDS TERMINATED BY X'2c' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (empno POSITION(1:4) INTEGER EXTERNAL, job POSITION(14:22) INTEGER EXTERNAL) - 装入分区表
发出命令:
清单 9. 示例 Emp_orig.datsqlldr scott/tiger control=partition.ctl log=partition.log。7369, SMITH,CLERK,7902,17-DEC-80,800,20 7499, ALLEN,SALESMAN,7698, 20-FEB-81,1600,300,30 7521, WARD,SALESMAN,7698, 22-FEB-81,1250,500,30 7566, JONES,MANAGER,7839, 02-APR-81,2975,20 7654, MARTIN,SALESMAN,7698, 28-SEP-81,1250,1400,30清单 10. Partition.ctlLOAD DAT- 上一篇教程: DB2 基础知识: DB2 UDB SQL 管理例程简介
- 下一篇教程: 备份、恢复和前滚恢复简介






