SQLLoader1(简单测试,以控制文件方式导入数据)

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

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

表已创建。

SQL> SELECT * FROM EMP2;

未选定行

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

保存为:D:oracletest estSqlLdr1.ctl

LOAD DATA
INFILE *
INTO TABLE EMP2
FILEDS TERMINATED BY ","
(EMPN0,ENAME,JOB,SAL,COMM,DEPTNO)
BEGINDATA
1111,RUSKY1,DBA1,6000,300,20
1112,RUSKY2,DBA2,7000,200,10
1113,RUSKY2,DBA3,8000,100,30

==执行控制文件

C:UsersAdministrator>SQLLDR SCOTT/tiger CONTROL=D:oracletest	estSqlLdr1.ctl

SQL*Loader: Release 11.2.0.1.0 - Production on 星期日 11月 30 12:20:03 2014

Copyright (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 20
1112 RUSKY2 DBA2 7000 200 10
1113 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,20
1112,RUSKY2,DBA2,7000,200,10
1113,RUSKY2,DBA3,8000,100,30

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

原文地址:https://www.cnblogs.com/rusking/p/4133054.html