Oracle数据库sqlload用法的相关知识介绍_Oracle_数据库_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 数据库 > Oracle > Oracle数据库sqlload用法的相关知识介绍

Oracle数据库sqlload用法的相关知识介绍

 2013/8/10 1:20:21    程序员俱乐部  我要评论(0)
  • 摘要:Oracle数据库sqlload用法的相关知识是本文我们主要要介绍的内容,那么什么是sqlload呢?看完下面的例子我们就知道了。当用Oracle数据库处理百万级别数据时,选择sqlload应该是比较好的方案。下面是自学sqlload的例子,供初学者参考。1、在哪儿运行sqlload?首先,电脑上至少装有oracle客户端程序,在这里就可以执行sqlload,运行-->cmd--->sqlldr。里面有很多注释可以自己参考。498)this.width=498
  • 标签:用法 ORA 数据库 数据 SQL Oracle Oracle数据库

Oracle数据库sqlload用法的相关知识是本文我们主要要介绍的内容,那么什么是sqlload呢?看完下面的例子我们就知道了。当用Oracle数据库处理百万级别数据时,选择sqlload应该是比较好的方案。下面是自学sqlload的例子,供初学者参考。

1、在哪儿运行sqlload?

首先,电脑上至少装有oracle客户端程序,在这里就可以执行sqlload,运行-->cmd--->sqlldr。里面有很多注释可以自己参考。

class='fit-image' onload='javascript:if(this.width>498)this.width=498;' onmousewheel = 'javascript:return big(this)' border="0" alt="Oracle数据库sqlload用法的相关知识介绍" small="0" src="http://images.51cto.com/files/uploadimg/20110902/1051320.jpg" />

2、控制文件

写sqlload需要的控制文件.ctl或者.cvs格式。

control.ctl内容:

  1. LOAD DATA  
  2. INFILE 'f:\TL_FUND_MMS_BATCH.txt'  
  3. BADFILE 'f:\BAD_TL_FUND_MMS_BATCH1.dat'  
  4. APPEND  
  5. INTO TABLE tl_fund_mms_batch  
  6. Fields terminated by ","   
  7. Optionally enclosed by '"'  
  8. trailing nullcols   
  9. (   
  10.  NUMBATCHSEQID ,  
  11.  VC2BATCHNAME,  
  12.  VC2RESOURCEID,  
  13.  NUMCOUNTTOTAL ,  
  14.  NUMCOUNTSUCS,  
  15.  NUMCOUNTLONG ,  
  16.  NUMCOUNTFAILD ,  
  17.  VC2BILLPATH,  
  18.  NUMCREATEUSERID ,  
  19.  NUMSENDUSERID ,   
  20.  NUMDEALFLAG,  
  21.  DATCREATETIME DATE "YYYY-MM-DD HH24:MI:SS",  
  22.  DATSENDTIME DATE "YYYY-MM-DD HH24:MI:SS"  

3、数据文件

  1. TL_FUND_MMS_BATCH.txt内容:103,"肖测试", "0111022109240241310006", 1, 1, 0, 0,  
  2.  "../webapps/billFiles\data(2).xml", 900000, 900000, 2,2011-4-28 15:50:26,2011-4-28 15:50:26 

4、执行命令

我把所有文件都放到了F盘:

Oracle数据库sqlload用法的相关知识介绍

执行命令:sqlldr mjjzh/mjjzh@orcl f:\control.ctl log=f:\log.log

5、查看日志

如果执行完命令,在指定的目录下就会生成日志信息,如果执行过程中有错误,就会在相应的目录下生成坏数据文件,有错误的时候也会打印这句话:达到提交点 - 逻辑记录计数 1。不要认为打印了这句就认为执行成功了。

log.log内容:

  1. SQL*Loader: Release 10.2.0.1.0 - Production on 星期四 5月 12 17:01:38 2011  
  2. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  3. 控制文件:      f:\control.ctl  
  4. 数据文件:      f:\TL_FUND_MMS_BATCH.txt  
  5. 错误文件:    f:\BAD_TL_FUND_MMS_BATCH1.dat  
  6. 废弃文件:    未作指定  
  7. (可废弃所有记录)  
  8. 要加载的数: ALL  
  9. 要跳过的数: 0  
  10. 允许的错误: 50  
  11. 绑定数组: 64 行, 最大 256000 字节  
  12. 继续:    未作指定  
  13. 所用路径:       常规  
  14. 表 TL_FUND_MMS_BATCH,已加载从每个逻辑记录  
  15. 插入选项对此表 APPEND 生效  
  16. TRAILING NULLCOLS 选项生效  
  17.    列名                        位置      长度  中止 包装数据类型  
  18. ------------------------------ ---------- ----- ---- -------------------------  
  19. NUMBATCHSEQID                       FIRST     *   ,  O (") CHARACTER              
  20. VC2BATCHNAME                         NEXT     *   ,  O (") CHARACTER              
  21. VC2RESOURCEID                        NEXT     *   ,  O (") CHARACTER              
  22. NUMCOUNTTOTAL                        NEXT     *   ,  O (") CHARACTER              
  23. NUMCOUNTSUCS                         NEXT     *   ,  O (") CHARACTER              
  24. NUMCOUNTLONG                         NEXT     *   ,  O (") CHARACTER              
  25. NUMCOUNTFAILD                        NEXT     *   ,  O (") CHARACTER              
  26. VC2BILLPATH                          NEXT     *   ,  O (") CHARACTER              
  27. NUMCREATEUSERID                      NEXT     *   ,  O (") CHARACTER              
  28. NUMSENDUSERID                        NEXT     *   ,  O (") CHARACTER              
  29. NUMDEALFLAG                          NEXT     *   ,  O (") CHARACTER              
  30. DATCREATETIME                        NEXT     *   ,  O (") DATE YYYY-MM-DD HH24:MI:SS  
  31. DATSENDTIME                          NEXT     *   ,  O (") DATE YYYY-MM-DD HH24:MI:SS  
  32. 记录 1: 被拒绝 - 表 TL_FUND_MMS_BATCH 出现错误。  
  33. ORA-00001: unique constraint (MJJZH.PK_TL_FUND_MMS_BATCH) violated  
  34. 注:ORA-00001: unique constraint (MJJZH.PK_TL_FUND_MMS_BATCH) violated,是因为主键重复。  
  35. 表 TL_FUND_MMS_BATCH:  
  36. 0 行 加载成功。  
  37. 由于数据错误, 1 行 没有加载。  
  38. 由于所有 WHEN 子句失败, 0 行 没有加载。  
  39. 由于所有字段都为空的, 0 行 没有加载。  
  40. 为绑定数组分配的空间:                214656 字节 (64 行)  
  41. 读取   缓冲区字节数: 1048576  
  42. 跳过的逻辑记录总数:          0  
  43. 读取的逻辑记录总数:             1  
  44. 拒绝的逻辑记录总数:          1  
  45. 废弃的逻辑记录总数:        0  
  46. 从 星期四 5月  12 17:01:38 2011 开始运行  
  47. 在 星期四 5月  12 17:01:39 2011 处运行结束  
  48. 经过时间为: 00: 00: 01.20  
  49. CPU 时间为: 00: 00: 00.06 

6、注意事项:

①、日期格式转换:表中的最后两个字段是日期格式,这里需做 DATCREATETIME DATE "YYYY-MM-DD HH24:MI:SS", 转换,相当于to_date()。且数据文件中是2011-4-28 15:50:26格式,不是"2011-4-28 15:50:26"格式。否则会出错。(后来测试的时候发现带上也不会出错了,奇怪。)

②、插入数据库中的内容包含":如果数据文件中是"肖测试",控制文件中需加上Optionally enclosed by '"',这样在插入数据库时,内容就不包含"",下面是加Optionally enclosed by '"'与不加的效果。

Oracle数据库sqlload用法的相关知识介绍
 

关于Oracle数据库sqlload用法的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

发表评论
用户名: 匿名