使用awk查詢不滿足sqlloader載入條件的記錄

redhouser發表於2013-05-29
使用sql*loader載入資料時,出現了不滿足載入條件的記錄,載入日誌如下:

Total logical records skipped:          0
Total logical records read:         30961
Total logical records rejected:         0
Total logical records discarded:      485


載入控制檔案中有如下條件:
WHEN (10:36)='000000000000000000000000000' AND (68:69) = '00'


而在載入時沒有指定discard引數,如何獲取不滿足載入條件的記錄?

這裡使用awk解決:
--滿足條件的記錄個數:
cat ALL.INQREFAC.asc|awk '{if ( substr($0,10,27) == "000000000000000000000000000" && substr($0,68,2) == "00" ) {print $0}}'|wc -l

--不滿足條件的記錄
cat ALL.INQREFAC.asc|awk '{if ( substr($0,10,27) != "000000000000000000000000000" || substr($0,68,2) != "00" ) {print $0}}'

--不滿足條件的記錄
cat ALL.INQREFAC.asc|awk '{if ( substr($0,10,27) != "000000000000000000000000000" || substr($0,68,2) != "00" ) {print substr($0,10,27),"",substr($0,68,2)}}'


當然,最簡單的方法是載入時指定discard引數。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18922393/viewspace-762382/,如需轉載,請註明出處,否則將追究法律責任。

相關文章