论坛首页 Web前端技术论坛

sqlldr装载数据

浏览 2908 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-11-29  
使用sqlldr向oracle导入文本数据
    D:\> sqlldr mcp/mcp_asia D:\mcp_operator.ctl mcp_operator.bad silent=header,feedback
[说明]
        silent=header,feedback 隐藏数据载入过程中的提示信息

其中,控制文件mcp_operator.ctl的内容如下:
Load data
infile 'D:\mcp_operator.AVL'
into table mcp.int_03001_20100616
append
fields terminated by ','
(
        op_id,op_name,login_name,phone,op_status,lock_status,org_id,region_code,county_code
)
[说明]
        infile 要载入的数据文件完整路径
        into table mcp.int_03001_20100616 向表中插入数据
        fields terminated by ',' 字段分隔符为逗号
        (op_id,op_name,...) 定义字段顺序
        row 多少条记录提交一次,默认为64
数据载入方式:
        a、insert,为缺省方式,在数据装载开始时要求表为空
        b、append,在表中追加新记录
        c、replace,删除旧记录,替换成新装载的记录
        d、truncate,同上
表字段无对应值,允许其为空:
        TRAILING NULLCOLS

参考:http://www.cnblogs.com/twyth/archive/2009/08/16/1547141.html


1) 把 users_data.cvs 中的内容补到 users.ctl 中,并以 BEGINDATA 连接,还要把 INFILE "users_data.csv" 改为 INFILE *。同时为了更大化的说明问题,把数据处理了一下。此时,完整的 users.ctl 文件内容是:
OPTIONS (skip=1,rows=128) -- sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行
LOAD DATA
INFILE *  -- 因为数据同控制文件在一起,所以用 * 表示
append    -- 这里用了 append 来操作,在表 users 中附加记录
INTO TABLE users
when LOGIN_TIMES'8'  -- 还可以用 when 子句选择导入符合条件的记录
Fields terminated by ","
trailing nullcols
(
  virtual_column FILLER, --跳过由 PL/SQL Developer 生成的第一列序号
  user_id "user_seq.nextval", --这一列直接取序列的下一值,而不用数据中提供的值
  user_name "'Hi '||upper(:user_name)",--还能用SQL函数或运算对数据进行加工处理
  login_times terminated by ",", NULLIF(login_times='NULL') --可为列单独指定分隔符
  last_login DATE "YYYY-MM-DD HH24:MI:SS" NULLIF (last_login="NULL") --当字段为"NULL"时就是 NULL
)
BEGINDATA --数据从这里开始,USER_ID,USER_NAME,LOGIN_TIMES,LAST_LOGIN
1,1,Unmi,3,2009-1-5 20:34
2,2,Fantasia,5,2008-10-15
3,3,隔叶黄莺,8,2009-1-2
4,4,Kypfos,NULL,NULL
5,5,不知秋,1,2008-12-23


======================================================================
日期类型:             op_time date "YYYY-MM-DD"
timestamp类型:        so_date timestamp "YYYY-MM-DD HH24:MI:SS.ff"
使用Oracle函数:       so_nbr "TRIM(:so_nbr)"
   发表时间:2012-11-30  
总结的不错啊。我刚好用到它。
不过,我在字符集上花了点功夫。
楼主在date等字段处理上写的很好。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics