频道栏目
首页 > 资讯 > 数据库 > 正文

SQLServer辅导:SQLLDR的使用方法

10-06-06        来源:[db:作者]  
收藏   我要投稿
  用于将格式化的文本数据上载到表中去
  以表emp为例
  首先编写一个控制命令的脚本文件,通常以ctl结尾,内容如下:
  emp.ctl
  load  data
  append
  into table emp
  fields terminated by
  (
  no float external,
  name char(20),
  age integer external,
  duty char(1),
  salary float external,
  upd_ts date(14) YYYYMMDDHH24MISS
  )
  括号里对数据文件里每个数据域进行解释,以此在上载时与目标表进行比对。
  除了append外,还有insert、replace、truncate等方式,与append大同小异,不作更多的解释。
  再将上载数据组织成数据文件,通常以dat结尾,内容如下:
  emp.dat
  100000000001Tom000020100000000500020020101000000
  100000000002Jerry000025200000000800020020101235959
  分隔符要与ctl文件中fields terminated by指定的一致,这个例子中为""
  ctl和dat文件就绪后可以执行上载,命令为:
  sqlldr dbuser/oracle control=emp.ctl data=emp.dat
  也可以将dat文件合并在ctl文件中,ctl文件改写为:
  emp2.ctl
  load data
  infile *
  append
  into table emp
  fields terminated by
  (
  no float external,
  name char(20),
  age integer external,
  duty char(1),
  salary float external,
  upd_ts date(14) YYYYMMDDHH24MISS
  )
  begindata
  100000000003Mulder000020100000000500020020101000000
  100000000004Scully000025200000000800020020101235959
  控制文件中infile选项跟sqlldr命令行中data选项含义相同,如使用infile  *则表明数据在本控制文件以begin  data开头的区域内。
  这样命令变成:
  sqlldr dbuser/oracle control=emp2.ctl
  conventional path
  通过常规通道方式上载。
  rows:每次提交的记录数
  bindsize:每次提交记录的缓冲区
  readsize:与bindsize成对使用,其中较小者会自动调整到较大者
  sqlldr先计算单条记录长度,乘以rows,如小于bindsize,不会试图扩张rows以填充bindsize;如超出,则以bindsize为准。
  命令为:
  sqlldr dbuser/oracle control=emp.ctl log=emp.log rows=10000 bindsize=8192000
  direct path
  通过直通方式上载,不进行SQL解析。
  命令为:
  sqlldr dbuser/oracle control=emp.ctl log=emp.log direct=true
  例如:
  sqlldr userid=%s control=%s log=%s readsize=6553600 bindsize=6553600 rows=5000 silent=header,feedback direct = true
相关TAG标签
上一篇:connectionString属性server、database设置
下一篇:SQLServer拆分字符串的三种方法
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站