Oracle數(shù)據(jù)庫sqlload用法的相關(guān)知識介紹
Oracle數(shù)據(jù)庫sqlload用法的相關(guān)知識是本文我們主要要介紹的內(nèi)容,那么什么是sqlload呢?看完下面的例子我們就知道了。當(dāng)用Oracle數(shù)據(jù)庫處理百萬級別數(shù)據(jù)時(shí),選擇sqlload應(yīng)該是比較好的方案。下面是自學(xué)sqlload的例子,供初學(xué)者參考。
1、在哪兒運(yùn)行sqlload?
首先,電腦上至少裝有oracle客戶端程序,在這里就可以執(zhí)行sqlload,運(yùn)行-->cmd--->sqlldr。里面有很多注釋可以自己參考。
2、控制文件
寫sqlload需要的控制文件.ctl或者.cvs格式。
control.ctl內(nèi)容:
- LOAD DATA
- INFILE 'f:\TL_FUND_MMS_BATCH.txt'
- BADFILE 'f:\BAD_TL_FUND_MMS_BATCH1.dat'
- APPEND
- INTO TABLE tl_fund_mms_batch
- Fields terminated by ","
- Optionally enclosed by '"'
- trailing nullcols
- (
- NUMBATCHSEQID ,
- VC2BATCHNAME,
- VC2RESOURCEID,
- NUMCOUNTTOTAL ,
- NUMCOUNTSUCS,
- NUMCOUNTLONG ,
- NUMCOUNTFAILD ,
- VC2BILLPATH,
- NUMCREATEUSERID ,
- NUMSENDUSERID ,
- NUMDEALFLAG,
- DATCREATETIME DATE "YYYY-MM-DD HH24:MI:SS",
- DATSENDTIME DATE "YYYY-MM-DD HH24:MI:SS"
- )
3、數(shù)據(jù)文件
- TL_FUND_MMS_BATCH.txt內(nèi)容:103,"肖測試", "0111022109240241310006", 1, 1, 0, 0,
- "../webapps/billFiles\data(2).xml", 900000, 900000, 2,2011-4-28 15:50:26,2011-4-28 15:50:26
4、執(zhí)行命令
我把所有文件都放到了F盤:
執(zhí)行命令:sqlldr mjjzh/mjjzh@orcl f:\control.ctl log=f:\log.log
5、查看日志
如果執(zhí)行完命令,在指定的目錄下就會(huì)生成日志信息,如果執(zhí)行過程中有錯(cuò)誤,就會(huì)在相應(yīng)的目錄下生成壞數(shù)據(jù)文件,有錯(cuò)誤的時(shí)候也會(huì)打印這句話:達(dá)到提交點(diǎn) - 邏輯記錄計(jì)數(shù) 1。不要認(rèn)為打印了這句就認(rèn)為執(zhí)行成功了。
log.log內(nèi)容:
- SQL*Loader: Release 10.2.0.1.0 - Production on 星期四 5月 12 17:01:38 2011
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- 控制文件: f:\control.ctl
- 數(shù)據(jù)文件: f:\TL_FUND_MMS_BATCH.txt
- 錯(cuò)誤文件: f:\BAD_TL_FUND_MMS_BATCH1.dat
- 廢棄文件: 未作指定
- (可廢棄所有記錄)
- 要加載的數(shù): ALL
- 要跳過的數(shù): 0
- 允許的錯(cuò)誤: 50
- 綁定數(shù)組: 64 行, 最大 256000 字節(jié)
- 繼續(xù): 未作指定
- 所用路徑: 常規(guī)
- 表 TL_FUND_MMS_BATCH,已加載從每個(gè)邏輯記錄
- 插入選項(xiàng)對此表 APPEND 生效
- TRAILING NULLCOLS 選項(xiàng)生效
- 列名 位置 長度 中止 包裝數(shù)據(jù)類型
- ------------------------------ ---------- ----- ---- -------------------------
- NUMBATCHSEQID FIRST * , O (") CHARACTER
- VC2BATCHNAME NEXT * , O (") CHARACTER
- VC2RESOURCEID NEXT * , O (") CHARACTER
- NUMCOUNTTOTAL NEXT * , O (") CHARACTER
- NUMCOUNTSUCS NEXT * , O (") CHARACTER
- NUMCOUNTLONG NEXT * , O (") CHARACTER
- NUMCOUNTFAILD NEXT * , O (") CHARACTER
- VC2BILLPATH NEXT * , O (") CHARACTER
- NUMCREATEUSERID NEXT * , O (") CHARACTER
- NUMSENDUSERID NEXT * , O (") CHARACTER
- NUMDEALFLAG NEXT * , O (") CHARACTER
- DATCREATETIME NEXT * , O (") DATE YYYY-MM-DD HH24:MI:SS
- DATSENDTIME NEXT * , O (") DATE YYYY-MM-DD HH24:MI:SS
- 記錄 1: 被拒絕 - 表 TL_FUND_MMS_BATCH 出現(xiàn)錯(cuò)誤。
- ORA-00001: unique constraint (MJJZH.PK_TL_FUND_MMS_BATCH) violated
- 注:ORA-00001: unique constraint (MJJZH.PK_TL_FUND_MMS_BATCH) violated,是因?yàn)橹麈I重復(fù)。
- 表 TL_FUND_MMS_BATCH:
- 0 行 加載成功。
- 由于數(shù)據(jù)錯(cuò)誤, 1 行 沒有加載。
- 由于所有 WHEN 子句失敗, 0 行 沒有加載。
- 由于所有字段都為空的, 0 行 沒有加載。
- 為綁定數(shù)組分配的空間: 214656 字節(jié) (64 行)
- 讀取 緩沖區(qū)字節(jié)數(shù): 1048576
- 跳過的邏輯記錄總數(shù): 0
- 讀取的邏輯記錄總數(shù): 1
- 拒絕的邏輯記錄總數(shù): 1
- 廢棄的邏輯記錄總數(shù): 0
- 從 星期四 5月 12 17:01:38 2011 開始運(yùn)行
- 在 星期四 5月 12 17:01:39 2011 處運(yùn)行結(jié)束
- 經(jīng)過時(shí)間為: 00: 00: 01.20
- CPU 時(shí)間為: 00: 00: 00.06
6、注意事項(xiàng):
①、日期格式轉(zhuǎn)換:表中的最后兩個(gè)字段是日期格式,這里需做 DATCREATETIME DATE "YYYY-MM-DD HH24:MI:SS", 轉(zhuǎn)換,相當(dāng)于to_date()。且數(shù)據(jù)文件中是2011-4-28 15:50:26格式,不是"2011-4-28 15:50:26"格式。否則會(huì)出錯(cuò)。(后來測試的時(shí)候發(fā)現(xiàn)帶上也不會(huì)出錯(cuò)了,奇怪。)
②、插入數(shù)據(jù)庫中的內(nèi)容包含":如果數(shù)據(jù)文件中是"肖測試",控制文件中需加上Optionally enclosed by '"',這樣在插入數(shù)據(jù)庫時(shí),內(nèi)容就不包含"",下面是加Optionally enclosed by '"'與不加的效果。
關(guān)于Oracle數(shù)據(jù)庫sqlload用法的相關(guān)知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】