sqlldr能迅速的将大量数据导入数据库中,为dba的工作,提供了很大的便利,它能支持txt、cvs等众多格式,并且支持在导入过程中使用函数,省去了众多数据库的折腾,为此特总结下工作中常用的一些sqlldr用法,希望能为大家sqlldr的学习提供一些帮助。

在这边文章中,我总结了sqlldr导入所支持的txt、csv、tsv格式,如何导入,并且在每一个参数后加入注释:

    --------------TXT格式-------------

-----------load.ctl-----------------------

Load DATA

INFILE 'D:\2011年7月无线城市群发1次.TXT'

truncate  INTO TABLE test1  --操作类型,用 truncate table 来清除表中原有记录,这里truncate也可以换                               成append,两者的区别在于,truncate在导入时会先对表进行truncate操作,                               append的意思是在原表的数据后添加新数据

Fields terminated by ","    -- 数据中每行记录用 "," 分隔,这里的逗号可以根据实际情况,进行替换

Optionally enclosed by '"'  -- 数据中每个字段用 '"' 框起,比如字段中有 "," 分隔符时

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

(

  msisdn                    --列出表中你所需要导入数据的列,

)

----------------------excel、csv格式--------------

当对excel进行导入时,需要先将excel转换成csv格式,

实例如下:

这里我对时间进行了转换,如果不加函数直接导入的话,为字符格式

------------------CSV格式------

Load DATA

INFILE 'D:\test.csv'

truncate INTO TABLE test2

Fields terminated by ','    -- 数据中每行记录用 "," 分隔

(

   id          ,

  ip_addr      ,

  area         ,

  access_method,

  status       ,

  begin_time   ,

  end_time  Date "yyyy-mm-dd hh24:mi:ss",------此列为日期型,日期格式为2011-05-04 18:20:30  

  remark       ,

  gate_name    

)

----------------tsv---------------

Load DATA

--CHARACTERSET UTF8           --在导入过程中如果出现出现乱码状况,可添加此语句,具体的格式,根据情                                 况而定

INFILE 'D:\users_20111125.tsv'

truncate                      --操作类型,用 truncate table 来清除表中原有记录

INTO TABLE test3

Fields terminated by X'09'    --设置分隔符(X’09’表示制表符:Tab)

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

(GID,        

 USERID

 )   

--------------sql-----------------

 

sqlldr smzydb/soshare@252 control=D:\load.ctl direct=true

   

---------------注意事项

1、我们用sqlldr进行导入操作,通常导入数据的表的列都为字符型

 例如:

   create table test2(id varchar2(30),

                      ip_aarchar2(30),

                      area varchar2(30),

                      access_method varchar2(30),

                      status varchar2(30),

                      begin_time varchar2(30),

                      end_time varchar2(30),

                      remark varchar2(30),

                      gate_name varchar2(30));

                          

2、CHARACTERSET UTF8           --在导入过程中如果出现出现乱码状况,可添加此语句,具体的格式,根据                                  情况而定

3、sqlload     的日期格式导入

 如果导入文件时间为“2011-12-11 18:00:00”,如果我们在导入的时候,不加任何函数进行转换,那么入库后是字符型函数,如果想入库后为日期型,就需要加入函数

               例如:

               Load DATA

               INFILE 'D:\sqlload\11月25日_用户注册核对.csv'

               truncate INTO TABLE tab_register

               Fields terminated by ','         

              (regnum,

               regdate  Date "yyyy-mm-dd hh24:mi:ss",

               source)