SQL Loader的导入文本数据
 
环境:
Oracle10g 10.2
 
有一个文本数据,格式如下:
        HLR_CODE  HLR_TYPE  REGION_CODE  AREA_CODE  PROV_CODE  BUREAU_CODE  VALID_DATE  EXPIRE_DATE  MODIFY_DATE
1  1302309  1  565  565  551  Z00  2000-1-1  2020-12-31 23:59:59  2008-11-19 20:22:56
2  1302310  1  210  21  210  Z00  2000-1-1  2020-12-31 23:59:59  2008-11-19 20:22:56
3  1302311  1  210  21  210  Z00  2000-1-1  2020-12-31 23:59:59  2008-11-19 20:22:56
4  1302312  1  210  21  210  Z00  2000-1-1  2020-12-31 23:59:59  2008-11-19 20:22:56
 
需要导入到一张表:
create table BS_HLR_INFO
(
    HLR_CODE        VARCHAR2(8) not null,
    HLR_TYPE        NUMBER(3) not null,
    REGION_CODE VARCHAR2(5) not null,
    AREA_CODE     VARCHAR2(5) not null,
    PROV_CODE     VARCHAR2(7) not null,
    BUREAU_CODE VARCHAR2(5),
    VALID_DATE    DATE not null,
    EXPIRE_DATE DATE not null,
    MODIFY_DATE DATE default sysdate
);
 
方法是通过sql loader来完成:
1、写配置文件
OPTIONS (skip=1,rows=128)    
LOAD DATA    
INFILE "hlr_info"
truncate
INTO TABLE BS_HLR_INFO -- 要插入记录的表    
Fields terminated by "  "    
trailing nullcols --表的字段没有对应的值时允许为空    
(    
    virtual_column FILLER, --这是一个虚拟字段,用来跳过由 PL/SQL Developer 生成的第一列序号        
    HLR_CODE,
    HLR_TYPE,
    REGION_CODE,
    AREA_CODE,
    PROV_CODE,
    BUREAU_CODE,
    VALID_DATE DATE "YYYY-MM-DD HH24:MI:SS",
    EXPIRE_DATE DATE "YYYY-MM-DD HH24:MI:SS",
    MODIFY_DATE DATE "YYYY-MM-DD HH24:MI:SS"
)
 
2、执行导入命令
F:\sqlloaderdata>dir hlr*
驱动器 F 中的卷是 work
卷的序列号是 647B-14FC

F:\sqlloaderdata 的目录

2010-08-27    16:25                             638 hlr_info.ctl
2010-08-24    09:58                18,470,605 hlr_info.dat
2010-08-27    16:27                         2,056 hlr_info.log
                             3 个文件         18,473,299 字节
                             0 个目录 28,318,511,104 可用字节

F:\sqlloaderdata>sqlldr cs/cs@hatest control=hlr_info.ctl
 
执行后控制台输出:
......
达到提交点 - 逻辑记录计数 223296
达到提交点 - 逻辑记录计数 223406
达到提交点 - 逻辑记录计数 223516
达到提交点 - 逻辑记录计数 223626
达到提交点 - 逻辑记录计数 223632
达到提交点 - 逻辑记录计数 223633

F:\sqlloaderdata>
 
3、查看日志文件

SQL*Loader: Release 10.2.0.1.0 - Production on 星期五 8月 27 16:26:37 2010

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

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

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

表 BS_HLR_INFO,已加载从每个逻辑记录
插入选项对此表 TRUNCATE 生效
TRAILING NULLCOLS 选项生效

     列名                                                位置            长度    中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
VIRTUAL_COLUMN                                            FIRST         *    WHT            CHARACTER                        
    (FILLER FIELD)
HLR_CODE                                                         NEXT         *    WHT            CHARACTER                        
HLR_TYPE                                                         NEXT         *    WHT            CHARACTER                        
REGION_CODE                                                    NEXT         *    WHT            CHARACTER                        
AREA_CODE                                                        NEXT         *    WHT            CHARACTER                        
PROV_CODE                                                        NEXT         *    WHT            CHARACTER                        
BUREAU_CODE                                                    NEXT         *    WHT            CHARACTER                        
VALID_DATE                                                     NEXT         *    WHT            DATE YYYY-MM-DD HH24:MI:SS
EXPIRE_DATE                                                    NEXT         *    WHT            DATE YYYY-MM-DD HH24:MI:SS
MODIFY_DATE                                                    NEXT         *    WHT            DATE YYYY-MM-DD HH24:MI:SS

ROWS 参数所用的值已从 128 更改为 110

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


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

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

从 星期五 8月    27 16:26:37 2010 开始运行
在 星期五 8月    27 16:27:05 2010 处运行结束

经过时间为: 00: 00: 28.05
CPU 时间为: 00: 00: 02.61
 
导入成功!