1. 程式人生 > >Sql Loader的簡單使用

Sql Loader的簡單使用

oracle sql loader

之前總結的關於SQL*Loader的用法,今天又用到,又翻出來看看

SQL*Loader 可將外部文件中的數據加載到Oracle DB 的表中。它具有一個功能強大的數據分析引擎,因此對數據文件中數據的格式沒有什麽限制。

SQL*Loader 使用以下文件:

  • 輸入數據文件SQL*Loader 從控制文件中指定的一個或多個文件(或操作系統的等效文件)中讀取數據。從SQL*Loader 的角度看,數據文件中的數據是按記錄組織的。一個特定的數據文件可采用固定記錄格式、可變記錄格式或流記錄格式。可通過控制文件中的INFILE參數指定記錄格式。如果未指定記錄格式,默認格式為流記錄格式。

  • 控制文件:控制文件是一個文本文件,它是使用SQL*Loader 可識別的語言編寫的。控制文件指示SQL*Loader 在何處查找數據、如何分析和解釋數據以及在何處插入數據等等。控制文件算是一個導入的模板。

  • 日誌文件SQL*Loader 開始執行時,會創建日誌文件。如果不能創建日誌文件,執行就會終止。日誌文件包含加載操作的詳細說明,包括加載過程中發生的任何錯誤的說明。

  • 壞文件:壞文件中包含被SQL*Loader Oracle DB 拒絕的記錄。當輸入格式無效時,SQL*Loader 就會拒絕數據文件記錄。SQL*Loader 接受處理某一數據文件記錄後,會將該數據文件記錄發送到Oracle DB

    ,以便能夠作為一行插入到表中。如果Oracle DB 確定該行有效,就會將該行插入到表中;如果確定該行無效,則會拒絕該記錄,然後SQL*Loader 會將該記錄放入壞文件中。

  • 放棄文件:僅當需要這種文件並且指定了應啟用放棄文件時,才會創建此文件。放棄文件中包含的記錄是因不符合控制文件指定的任何記錄選擇標準而從加載中過濾掉的記錄

後面三個可以不選

操作步驟如下:

1),建立數據文件,我這裏使用的是從plsql developer中導出來的empemp.csv

內容如下:

技術分享圖片

2),target表要存在,要保持與數據文件的字段定義一致,否則會出錯。這裏我使用

as select方式根據emp表創建一張表emp3,再使用delete語句清空表數據。

3),建立一個控制文件user.ctl。我這裏的控制文件是我用EM工具生成的。內容如下:

OPTIONS (skip=1,rows=128)
    LOAD DATA
    INFILE '/u01/app/oracle/oradata/orcl/emp.csv'
    APPEND
    INTO TABLE SCOTT.EMP3
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (
      EMPNO INTEGER EXTERNAL,
      ENAME CHAR,
      JOB CHAR,
      MGR CHAR,
      HIREDATE DATE,
      SAL INTEGER EXTERNAL,
      COMM INTEGER EXTERNAL,
      DEPTNO INTEGER EXTERNAL
    )


註:

1.LOAD DATA語句通知SQL*Loader 開始新數據加載操作

2.INFILE關鍵字指定含有待加載數據的數據文件的名稱。這裏還可以使用 BADFILEDISCARDFILE 來指定壞數據和丟棄數據的文件

3.APPEND關鍵字是將數據加載到非空表時可以使用的選項之一。要將數據加載到空表中,請使用INSERT關鍵字。

4.INTO TABLE 要插入記錄的表

5.Fields terminated by "," 定義數據中每行記錄用 "," 分隔

6.Optionally enclosed by '"' -- 數據中每個字段用 '"' 框起,比如字段中有 "," 分隔符時

7.第一行處OPTIONSskip=1是跳過第一行,rows=128定義要加載的行數限制

4),執行命令:

 
sqlldr system/oracle control=user.ctl

截圖如下:

技術分享圖片

5),查詢驗證

技術分享圖片

sqlldr更多用法請自行網上搜索···


Sql Loader的簡單使用