SQLLDR-CTL檔案

brj880719發表於2017-12-12

SQLLDR 可以把一些以文字格式存放的資料順利的匯入到oracle資料庫中,是一種在不同資料庫之間進行資料遷移的非常方便而且通用的工具。缺點就速度比較慢,另外對blob等型別的資料不方便。

CTL 檔案介紹

第一部分

1、LOAD DATA:通常以此為開頭,其前可加如下引數:
2、UNRECOVERABLE:表示資料不可恢復
3、RECOVERABLE:表示資料可恢復
4、CONTINUE_LOAD:表示繼續新增

第二部分

1、INFILE:表示資料檔案位置,如果值為*,表示資料就在控制檔案中,本例中沒有單獨的資料檔案,對於大多數載入而言,都會將資料檔案與控制檔案分離。
2、INTO TABLE tbl_name:tbl_name 即資料要載入到的目標表,該表在你執行 SQLLDR 命令之前必須已經建立。
3、INTO 前還有一些很有意思的引數需要說明;
4、INSERT:向表中插入資料,表必須為空,如果表非空的話,執行 SQLLDR 命令時會報錯,預設就是 INSERT 引數。
5、APPEND:向表中追加資料,不管表中是否有資料。
6、REPLACE:替換表中資料,相當於先 DELETE 表中全部資料,然後再 INSERT。
7、TRUNCATE:類似 REPLACE,只不過這裡不使用 DELETE 方式刪除表中資料,而是通過 TRUNCATE 的方式刪除,然後再 INSERT。
8、FIELDS TERMINATED BY ",":設定資料部分字串的分隔值,這裡設定為逗號(,)分隔,當然也可以換成其他任意可見字元,只要確定那是資料行中的分隔符就行。
9、(ENAME, JOB, SAL):要插入的表的列名,這裡需要注意的是列名要與表中列名完全相同,列的順序可以與表中列順序不同,但是必須與資料部分的列一一對應。
10、position 關鍵字用來指定列的開始和結束位置
11、position(m:n):指從第 m 個字元開始截止到第 n 個字元作為列值
12、position(*+2:15):直接指定數值的方式叫做絕對偏移量,如果使用*號,則為相對偏移量,表示上一個欄位哪裡結束,這次就哪裡開始,相對便宜量也可以再做運算。
13、position(*) char(9):這種相對偏移量+型別和長度的優勢在於,你只需要為第一列指定開始位置,其他列只需要指定列長度就可以。
14、FILLER:控制檔案中指定 FILLER,表示該列值不匯入表中。
15、BEGINDATA:表示以下為待載入資料,僅當 INFILE 指定為 * 時有效

第三部分
資料

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

相關文章