首页 > 代码库 > SQLLoader测试一

SQLLoader测试一

1、创建表:
SQL> conn scott/tiger@orcl;
已连接。

SQL> CREATE TABLE EMP2 AS SELECT * FROM EMP WHERE 1=2;

表已创建。

SQL> SELECT * FROM EMP2;

未选定行

====================
2、以控制文件方式导入数据
==编写控制文件:

保存为:D:\oracletest\testSqlLdr1.ctl

LOAD DATAINFILE *INTO TABLE EMP2FILEDS TERMINATED BY ","(EMPN0,ENAME,JOB,SAL,COMM,DEPTNO)BEGINDATA1111,RUSKY1,DBA1,6000,300,201112,RUSKY2,DBA2,7000,200,101113,RUSKY2,DBA3,8000,100,30

==执行控制文件

C:\Users\Administrator>SQLLDR SCOTT/tiger CONTROL=D:\oracletest\testSqlLdr1.ctlSQL*Loader: Release 11.2.0.1.0 - Production on 星期日 11月 30 12:20:03 2014Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.达到提交点 - 逻辑记录计数 2达到提交点 - 逻辑记录计数 3

==查询结果:

SQL> select * from emp2;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- -------------- ---------- ---------- ----------1111 RUSKY1 DBA1 6000 300 201112 RUSKY2 DBA2 7000 200 101113 RUSKY2 DBA3 8000 100 30

======================================================================
3、控制文件说明:

LOAD DATA    --控制文件一般以些开头INFILE *     --*表示数据就在当前控制文件中,如果有单独的数据文件,需要指明数据文件的位置。INTO TABLE EMP2 /*导入到哪一张表。INTO前可用参数:INSERT(默认)向表中插入数据,表必须为空,如果非空,执行SQLLDR时会报错。APPEND:追加数据,不管表中是否有数据。 REPLACE:替换表中的数据,相关于先DELETE表中的所有数据,再INSERT。TRUNCATE:通过TRUNCATE方式清空表中的数据,然后再INSERT。*/FILEDS TERMINATED BY ","     --设置数据部分字符串分隔符(EMPN0,ENAME,JOB,SAL,COMM,DEPTNO)--要插入的表折列名。列的顺序可以与表中不同,但是必须跟数据部分的列值一一对应。BEGINDATA --表示以下为待加载的数据,仅当INFILE指定为*时有效。1111,RUSKY1,DBA1,6000,300,201112,RUSKY2,DBA2,7000,200,101113,RUSKY2,DBA3,8000,100,30

4、日志文件、错误文件、废弃文件:
在默认情况下,SQLLDR命令在执行的过程中会产生一个与控制文件同名的日志文件,扩展名为.log。如果有错误,也会产生一个同名的错误文件,文件扩展名为.bad。还有一个废弃文件,文件扩展名为.dsc,必须指定废弃文件,否则默认情况下不会产生,里面记录未导入成功的数据。
如我在CMD窗口下执行SQLLDR的路径为:C:\Users\Administrator>,则默认产生的日志文件及错误文件都在这个路径下。

SQLLoader测试一