您好,登錄后才能下訂單哦!
之前總結的關于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中導出來的emp表emp.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關鍵字指定含有待加載數據的數據文件的名稱。這里還可以使用 BADFILE、DISCARDFILE 來指定壞數據和丟棄數據的文件
3.APPEND關鍵字是將數據加載到非空表時可以使用的選項之一。要將數據加載到空表中,請使用INSERT關鍵字。
4.INTO TABLE 要插入記錄的表
5.Fields terminated by "," 定義數據中每行記錄用 "," 分隔
6.Optionally enclosed by '"' -- 數據中每個字段用 '"' 框起,比如字段中有 "," 分隔符時
7.第一行處OPTIONS,skip=1是跳過第一行,rows=128定義要加載的行數限制
4),執行命令:
sqlldr system/oracle control=user.ctl
截圖如下:
5),查詢驗證
sqlldr更多用法請自行網上搜索···
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。