欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sqlldr装载数据

程序员文章站 2022-03-26 08:50:24
...
使用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)"