当前位置: 代码迷 >> SQL >> oracle sql load 范例
  详细解决方案

oracle sql load 范例

热度:269   发布时间:2016-05-05 11:23:50.0
oracle sql load 实例

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

1、在哪儿运行sqlload?

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

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

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" ?
  23. )?

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 [email protected] 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用法的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

  相关解决方案