在oracle中,使用sqlldr将文件中的数据导入到数据库

来源:互联网 发布:精灵乐章 知乎 编辑:程序博客网 时间:2024/05/16 14:43

1.创建数据文件:

 如,在D:\创建 zhaozhenlong.txt 文件,文件内容为:

11,12,13
21,22,23
31,32,33

2、创建控制文件:

如,在D:\创建 zhaozhenlong.ctl 文件,文件内容为:

load data
infile 'd:\zhaozhenlong.txt'
append into table zhaozhenlong
fields terminated by ','

trailing nullcols  // 表的字段没有对应的值时允许为空


(c1,c2,c3)

3、在数据库中创建表:

      create table zhaozhenlong(c1 varchar(20),c2 varchar(20),c3 varchar2(20));


4、在‘开始’/‘运行’中,执行:

     sqlldr userid=cs/cs@orademo control=d:\zhaozhenlong.ctl

5、查询数据库:

     select * from zhaozhenlong

     结果为:

 C1 C2 C3
1 11 12 13
2 21 22 23
3 31 32 33


//表的字段,可以在里面大做文章

(

T_ID FILLER,                                      // FILLER 关键字 此列的数值不会被装载

T_DATE "CASE WHEN :T_DATE is null THEN TO_DATE('2999-12-31','yyyy-mm-dd') ELSE TO_DATE(:T_DATE,'yyyy-mm-dd') END",                          

 //日期类型特别说明,并且要指定其格式      

//更一般的格式是T_DATE date ‘yyyy-mm-dd’

T_NAME POSITION(3:6) "UPPER(:T_NAME)",      //用位置POSITION来告诉装载的数据

                                                               //"UPPER(:T_NAME)" 转换为大写,注意冒号

T_SEX position(*:8) ,                  // 这个字段的开始位置在前一字段的结束位置

ENTIRE_LINE "UPPER(:T_NAME||:T_SEX)"    //连接并转换为大写

)


时间类型的字段处理

BIDSTARTTIME "TO_DATE(null)" ,    //设置该时间字段的值为null

BUYSARTTIME "TO_DATE(TO_CHAR(SYSDATE,'yyyymmdd'),'yyyymmdd')" ,   //设置该时间字段的值为当前系统的时间

CREATEDATE "to_date(:CREATEDATE,'''yyyy-mm-dd hh24:mi:ss''')"


原创粉丝点击