ITPub博客

首页 > 数据库 > Oracle > 测试oracle sqlldr

测试oracle sqlldr

原创 Oracle 作者:maneryan 时间:2014-12-03 11:39:30 0 删除 编辑
1.建立一个简单的文本文件,比如:testLoad.txt或者testLoad.csv,内容如下:
1,test,33
2,test,33
3,test,33
4,test,33
5,test,33
6,test,33
7,test,33
8,test,33
9,test,33
10,test,33
2.在数据库中建立一个表,比如:
create table test141203(
id number(5),
name varchar2(20),
age number(3),
constraint pk_id primary key(id));
3.建立一个简单的控制文件,比如:test.ctl,内容如下:
load data--控制文件标识  
infile 'e:\testload.txt'--要输入的数据文件名  
append
into table test141203
fields terminated by ','--指定分割符,终止字段值 
(id,name,age)
/*a、insert,为缺省方式,在数据装载开始时要求表为空
  b、append,在表中追加新记录
  c、replace,删除旧记录,替换成新装载的记录
  d、truncate,同上*/
4.打开cmd命令行工具,输入如下命令
sqlldr ipmsdp/ipmsdp$1234@inas_10.217.2.19 control='e:\test.ctl' data='e:\testload.txt'
/*若需要执行日志 则后增加log='e:\log.log'*/
5.注意
 a.完成后即可在数据库表中查到数据,若txt中将id=10的记录改成1,由于id未主键,最后一条记录不会插入到表中,而会在e盘下产生文件testload.bad,并在里边    记录未加载的数据;
b.win7下控制面板-文件夹选项--取消"隐藏已知文件类型的扩展名"前的对号,然后点确定 即可显示出来文件后缀名 便于增加ctl文件;
 c.oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。但是每个工具都有自己的特点。
  比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。有着   速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总会出现这样或者那样的问题,这个也许是   oracle公司自己产品的兼容性的问题吧。
  sql loader 工具却没有这方面的问题,它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非   常方便而且通用的工具。缺点就速度比较慢,另外对blob等类型的数据就有点麻烦了.
6. sqlldr用到的主要参数
1)   userid -- ORACLE username/password   --数据库 用户名/密码
2)control –控制文件
3)   log –记录的日志文件
4)   bad –坏数据文件,记录错误的未加载数据
5)   data –数据文件,* data参数只能指定一个数据文件,如果控制文件也通过infile指定了数据文件,并且指定多个,则sqlldr在执行时,先加载data参数指定的数据文件,控制文件中第一个infile指定的数据文件被忽略,但后续的infile指定的数据文件继续有效
 
6)   discard –丢弃的数据文件
7)   discardmax –允许丢弃数据的最大值        (默认全部)
8)   skip --跳过记录数,从数据文件中,从第一行开始要计算要跳过的行数 (默认0)
9)   load -- Number of logical records to load  (默认全部)
10) errors –允许的错误记录数,超过则终止任务(默认50)
11) rows -- Number of rows in conventional path bind array or between direct path data saves(每次提交的记录数,默认:常规路径64,直接路径全部,所以使用直接路径的话,效率会比普通的好太多太多)
 
12) bindsize -- Size of conventional path bind array in bytes(每次提交记录的缓冲区的大小,字节为单位,默认256000)
13) silent --禁止输出信息(header,feedback,errors,discards,partitions)
14) direct –使用直通路径方式导入(默认FALSE)
如果表中有索引的话,是不能指定direct=TRUE的,除非使用skip_index_maintenance=TRUE,这个就是在导入的时候忽略索引,所以在数据导入完毕以后,查看索引的状态应该都是无效的,需要重建之,如下SQL:select  * from dba_indexes where table_name='?' ;
alter  idnex index_name rebuild ;
 
重新建立索引要比新建索引快。
15) parallel --并行导入 (默认FALSE,注意:parallel并不是让一个sqlldr语句起多个进程来加载数据,而是不锁住加载表,允许别的直接路径加载.所以要使parallel起作用,应该先将要加载的数据文件分成多个,用多个sqlldr语句同时加载,如下例:
  sqlldr userid=scott/tiger control=load1.ctl data=data1.txt direct=y parallel=true & sqlldr userid=scott/tiger control=load2.ctl data=data2.txt direct=y parallel=true & sqlldr userid=scott/tiger control=load3.ctl data=data3.txt direct=y parallel=true &)



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26344835/viewspace-1354917/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-09-22

  • 博文量
    6
  • 访问量
    10696