程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫sqlload用法的相關知識介紹

Oracle數據庫sqlload用法的相關知識介紹

編輯:Oracle數據庫基礎

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 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用法的相關知識就介紹到這裡了,希望本次的介紹能夠對您有所收獲!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved