【SQL*Loader】SQL*Loader实验之(6)--非定长数据文件中字段个数多于表中列字段个数...


接下来的几个实验中,我将模拟几种 要加载的数据文件与表中字段定义不完全匹配的情况。实际应用中的大部分不匹配情况,通过在SQL*Loader控制文件中做一些设置或特殊处理都是可以轻松实现的。我们来逐个看一下。

【实验内容】
这个实验用来模拟处理一种 数据文件中数据字段个数 比 表中列字段个数 多 的情况。
我们利用SQL*Loader控制文件的FILLER关键字指定过滤列来轻松实现。
这种方法多用于非定长数据文件的处理。
※如果数据文件是定长数据,直接用position关键字指定有用字段的位置参数即可。


【实验过程】
//(1)看一下数据导入前dept2中表的数据状况。
       前面几个实验过后dept2表中的数据比较多了。看起来有些不太方便,我们先来清理一下。
C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 6月 19 11:50:31 2011

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

SQL> conn scott@test
输入口令:
已连接。
SQL> set feedback on
SQL> set linesize 3000
SQL> set pagesize 3000
SQL> truncate table dept2;

表被截断。

SQL> select * from dept2;

未选定行

SQL>

//(2)做成dept2_ShiYan06_01.dat数据文件。
内容如下:
----------------------------------------
12,skipcol1,ACCOUNTING,NEW YORK
22,skipcol2,RESEARCH,DALLAS
32,skipcol3,SALES,CHICAGO
42,skipcol4,OPERATIONS,BOSTON
----------------------------------------

//(3)做成sqlloder导入用控制文件dept2_ShiYan06_01.ctl
内容如下:
----------------------------------------
LOAD DATA
INFILE 'dept2_ShiYan06_01.dat'
BADFILE 'dept2_ShiYan06_01.bad'
INTO TABLE dept2
APPEND
FIELDS TERMINATED BY ","
( DEPTNO,
  tmp FILLER,  --这个地方随便指定一个列名,它的作用只是占位,然后在后面加一个FILLER关键字即可。
  DNAME,
  LOC
)
----------------------------------------

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

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

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

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

SQL*Loader: Release 10.2.0.1.0 - Production on 星期日 6月 19 12:34:10 2011

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

达到提交点 - 逻辑记录计数 3
达到提交点 - 逻辑记录计数 4

D:\Oracle学习\test\sqlloader\实验6>

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

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

SQL*Loader: Release 10.2.0.1.0 - Production on 星期日 6月 19 12:34:10 2011

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

控制文件:      dept2_ShiYan06_01.ctl
数据文件:      dept2_ShiYan06_01.dat
  错误文件:    dept2_ShiYan06_01.bad
  废弃文件:    未作指定
 
(可废弃所有记录)

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

表 DEPT2,已加载从每个逻辑记录
插入选项对此表 APPEND 生效

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


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


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

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

从 星期日 6月  19 12:34:10 2011 开始运行
在 星期日 6月  19 12:34:10 2011 处运行结束

经过时间为: 00: 00: 00.55
CPU 时间为: 00: 00: 00.22

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

执行后 dept2中的数据状况。
--------------------
SQL> select * from dept2;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        12 ACCOUNTING     NEW YORK
        22 RESEARCH       DALLAS
        32 SALES          CHICAGO
        42 OPERATIONS     BOSTON

已选择4行。

SQL>

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


 

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

转载于:http://blog.itpub.net/20335819/viewspace-700196/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值