1. 程式人生 > >Oracle 使用SQL Loader 從外部匯入資料

Oracle 使用SQL Loader 從外部匯入資料

在專案中經常會有一些基礎資料需要從Excel或其他檔案中匯入。大部分的格式都是樹結構。如果是這樣,我們對資料稍加整理,即可使用Oracle的資料匯入工具SQL Loader匯入我們所需要的資料到指定的表中。SQL Loader的詳細用法,可自己查詢相關詳細的文件,這裡只做簡單的使用介紹。

1、對資料進行整理。

拿出資料和資料庫中表比照一下,整理成與資料庫一致的機構(如果只是幾個欄位即對應欄位,整理成記錄的形式)。

2、使用Excel將資料匯出另存為txt或者rtf形式的檔案。以具體某種分隔符分隔。

3、編寫SQL Loader使用的控制檔案。

下面是一簡單的控制檔案sqlloader_nrfl.ctl

load data
infile 'nrfl.txt'
append into table gy_nrfl
fields terminated by X'09'
(flid,mc,qc,sjid,sfzx)

 
 

其中append為附加記錄到表中,X'09'為分隔符(製表符)

注意欄位與表中欄位對應一致

4、使用sqlldr命令匯入。

Windows環境下,使用cmd進入控制檔案所在目錄,執行命令sqlldr userid=scott/[email protected] control=sqlloader_nrfl.ctl,資料匯入成功。匯入預設生成同名為log字尾的日誌檔案,檢視該日誌檔案可以看到如下內容:

SQL*Loader: Release 10.2.0.3.0 - Production on 星期一 11月 7 10:54:27 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

控制檔案:      sqlloader_nrfl.ctl
資料檔案:      nrfl.txt
  錯誤檔案:    nrfl.bad
  廢棄檔案:    未作指定
 
(可廢棄所有記錄)

要載入的數: ALL
要跳過的數: 0
允許的錯誤: 50
繫結陣列: 64 行, 最大 256000 位元組
繼續:    未作指定
所用路徑:       常規

表 GY_NRFL,已載入從每個邏輯記錄
插入選項對此表 APPEND 生效

   列名                        位置      長度  中止 包裝資料型別
------------------------------ ---------- ----- ---- ---- ---------------------
FLID                                FIRST     *  WHT      CHARACTER            
MC                                   NEXT     *  WHT      CHARACTER            
QC                                   NEXT     *  WHT      CHARACTER            
SJID                                 NEXT     *  WHT      CHARACTER            
SFZX                                 NEXT     *  WHT      CHARACTER            



表 GY_NRFL:
  177 行 載入成功。
  由於資料錯誤, 0 行 沒有載入。
  由於所有 WHEN 子句失敗, 0 行 沒有載入。
  由於所有欄位都為空的, 0 行 沒有載入。



為繫結陣列分配的空間:                 82560 位元組 (64 行)
讀取   緩衝區位元組數: 1048576

跳過的邏輯記錄總數:          0
讀取的邏輯記錄總數:           177
拒絕的邏輯記錄總數:          0
廢棄的邏輯記錄總數:        0

從 星期一 11月 07 10:54:27 2011 開始執行
在 星期一 11月 07 10:54:27 2011 處執行結束

經過時間為: 00: 00: 00.16
CPU 時間為: 00: 00: 00.09


如果匯入過程中有失敗的記錄,會被記錄到nrfl.bad檔案中,如果沒有這個檔案,說明匯入已經成功執行,發現了這個檔案,可以檢視下具體失敗的原因,作出相應的修改後再次執行命令(注意修改控制檔案的資料來源檔案,改為nrfl.bad檔案即可)。