ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【SQL*Loader】SQL*Loader实验之(13)--同一数据文件,根据一定规则同时导入多张表

【SQL*Loader】SQL*Loader实验之(13)--同一数据文件,根据一定规则同时导入多张表

原创 Linux操作系统 作者:chicheng_cn421 时间:2011-06-19 23:10:19 0 删除 编辑


【实验内容】
模拟情况:同一数据文件,根据一定规则同时导入多张表。
※实际上这个是SQL*Loader控制文件中WHEN关键字的使用。


【实验过程】
//(1)整理环境

drop table dept2 purge;
drop table dept3 purge;


create table DEPT2
(
  DEPTNO NUMBER(2),
  DNAME  VARCHAR2(14),
  LOC    VARCHAR2(13)
);

create table DEPT3
(
  DEPTNO NUMBER(2),
  DNAME  VARCHAR2(14),
  LOC    VARCHAR2(13)
);

-------------------------

SQL> drop table dept2 purge;

表已删除。

SQL> drop table dept3 purge;

表已删除。

SQL> create table DEPT2
  2  (
  3    DEPTNO NUMBER(2),
  4    DNAME  VARCHAR2(14),
  5    LOC    VARCHAR2(13)
  6  );

表已创建。

SQL> create table DEPT3
  2  (
  3    DEPTNO NUMBER(2),
  4    DNAME  VARCHAR2(14),
  5    LOC    VARCHAR2(13)
  6  );

表已创建。

SQL> desc dept3;
 名称         是否为空?           类型
 ---------------------------------------
 DEPTNO                           NUMBER(2)
 DNAME                            VARCHAR2(14)
 LOC                              VARCHAR2(13)

SQL> desc dept2;
 名称         是否为空?           类型
 ---------------------------------------
 DEPTNO                           NUMBER(2)
 DNAME                            VARCHAR2(14)
 LOC                              VARCHAR2(13)

SQL> select * from dept2;

未选定行

SQL> select * from dept3;

未选定行

SQL>
-------------------------

//(2)做成数据文件dept2_ShiYan13_01.dat。
----------------------------------------
dept2,10,ACCOUNTING,NEW YORK
dept2,20,RESEARCH,DALLAS
dept2,30,SALES,CHICAGO
dept2,40,OPERATIONS,BOSTON
dept3,11,ACCOUNTING,NEW YORK
dept3,21,RESEARCH,DALLAS
dept3,31,SALES,CHICAGO
dept3,41,OPERATIONS,BOSTON
----------------------------------------

//(3)做成sqlloder导入用控制文件dept2_ShiYan13_01.ctl
内容如下:
----------------------------------------
LOAD DATA
INFILE 'dept2_ShiYan13_01.dat'
BADFILE 'dept2_ShiYan13_01.bad'
DISCARDFILE 'dept2_ShiYan13_01.dis'
TRUNCATE
INTO TABLE dept2
  WHEN flg='dept2'
  FIELDS TERMINATED BY ","
   ( flg  FILLER POSITION(1) , --注意:一定要指定POSITION(1)不能省略,只有指定POSITION(1)才能决定数据从第一列开始读取,否则会出现空值或数据列错位。

     DEPTNO,
     DNAME,
     LOC
   )
INTO TABLE dept3
  WHEN flg='dept3'
  FIELDS TERMINATED BY ","
  ( flg  FILLER POSITION(1) , --注意:一定要指定POSITION(1)不能省略,只有指定POSITION(1)才能决定数据从第一列开始读取,否则会出现空值或数据列错位。
    DEPTNO,
    DNAME,
    LOC
   )
----------------------------------------

//(4)启动并执行sqlloader。

sqlldr scott/tiger control="dept2_ShiYan13_01.ctl"  log="dept2_ShiYan13_01.log"

--------------------

D:\Oracle学习\test\sqlloader\实验13>sqlldr scott/tiger control="dept2_ShiYan13_01.ctl"  log="dept2_ShiYan13_01.log"

SQL*Loader: Release 10.2.0.1.0 - Production on 星期日 6月 19 23:08:14 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

达到提交点 - 逻辑记录计数 7
达到提交点 - 逻辑记录计数 8

D:\Oracle学习\test\sqlloader\实验13>
--------------------

产生的Log文件
--------------------

SQL*Loader: Release 10.2.0.1.0 - Production on 星期日 6月 19 23:08:14 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

控制文件:      dept2_ShiYan13_01.ctl
数据文件:      dept2_ShiYan13_01.dat
  错误文件:    dept2_ShiYan13_01.bad
  废弃文件:    dept2_ShiYan13_01.dis
(可废弃所有记录)

要加载的数: ALL
要跳过的数: 0
允许的错误: 50
绑定数组: 64 行, 最大 256000 字节
继续:    未作指定
所用路径:       常规

表 DEPT2,已加载在FLG = 0X6465707432(字符 'dept2')
插入选项对此表 TRUNCATE 生效

   列名                        位置      长度  中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
FLG                                     1     *   ,       CHARACTER           
  (FILLER FIELD)
DEPTNO                               NEXT     *   ,       CHARACTER           
DNAME                                NEXT     *   ,       CHARACTER           
LOC                                  NEXT     *   ,       CHARACTER           

表 DEPT3,已加载在FLG = 0X6465707433(字符 'dept3')
插入选项对此表 TRUNCATE 生效

   列名                        位置      长度  中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
FLG                                     1     *   ,       CHARACTER           
  (FILLER FIELD)
DEPTNO                               NEXT     *   ,       CHARACTER           
DNAME                                NEXT     *   ,       CHARACTER           
LOC                                  NEXT     *   ,       CHARACTER           


表 DEPT2:
  4 行 加载成功。
  由于数据错误, 0 行 没有加载。
  由于所有 WHEN 子句失败, 4 行 没有加载。
  由于所有字段都为空的, 0 行 没有加载。


表 DEPT3:
  4 行 加载成功。
  由于数据错误, 0 行 没有加载。
  由于所有 WHEN 子句失败, 4 行 没有加载。
  由于所有字段都为空的, 0 行 没有加载。


为绑定数组分配的空间:                132096 字节 (64 行)
读取   缓冲区字节数: 1048576

跳过的逻辑记录总数:          0
读取的逻辑记录总数:             8
拒绝的逻辑记录总数:          0
废弃的逻辑记录总数:        0

从 星期日 6月  19 23:08:14 2011 开始运行
在 星期日 6月  19 23:08:15 2011 处运行结束

经过时间为: 00: 00: 00.68
CPU 时间为: 00: 00: 00.21
--------------------

执行后 dept2、dept3中的数据状况。
--------------------

SQL> select * from dept2;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

已选择4行。

SQL> select * from dept3;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        11 ACCOUNTING     NEW YORK
        21 RESEARCH       DALLAS
        31 SALES          CHICAGO
        41 OPERATIONS     BOSTON

已选择4行。

SQL>

--------------------
以上。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20335819/viewspace-700220/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-05

  • 博文量
    261
  • 访问量
    369395