Oracle OCP(55):SQLLDR—CTL檔案

Ryan_Bai發表於2019-05-30

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

第一部分

  • LOAD DATA:通常以此為開頭,其前可加如下引數:

    • UNRECOVERABLE:表示資料不可恢復

    • RECOVERABLE:表示資料可恢復

    • CONTINUE_LOAD:表示繼續新增

第二部分

  • INFILE:表示資料檔案位置,如果值為*,表示資料就在控制檔案中,本例中沒有單獨的資料檔案,對於大多數載入而言,都會將資料檔案與控制檔案分離。

  • INTO TABLE tbl_name:tbl_name 即資料要載入到的目標表,該表在你執行 SQLLDR 命令之前必須已經建立。

  • INTO 前還有一些很有意思的引數需要說明;

    • INSERT:向表中插入資料,表必須為空,如果表非空的話,執行 SQLLDR 命令時會報錯,預設就是 INSERT 引數。

    • APPEND:向表中追加資料,不管表中是否有資料。

    • REPLACE:替換表中資料,相當於先 DELETE 表中全部資料,然後再 INSERT。

    • TRUNCATE:類似 REPLACE,只不過這裡不使用 DELETE 方式刪除表中資料,而是通過 TRUNCATE 的方式刪除,然後再 INSERT。

  • FIELDS TERMINATED BY ",":設定資料部分字串的分隔值,這裡設定為逗號(,)分隔,當然也可以換成其他任意可見字元,只要確定那是資料行中的分隔符就行。

  • (ENAME, JOB, SAL):要插入的表的列名,這裡需要注意的是列名要與表中列名完全相同,列的順序可以與表中列順序不同,但是必須與資料部分的列一一對應。

    • position 關鍵字用來指定列的開始和結束位置

      • position(m:n):指從第 m 個字元開始截止到第 n 個字元作為列值

      • position(*+2:15):直接指定數值的方式叫做絕對偏移量,如果使用*號,則為相對偏移量,表示上一個欄位哪裡結束,這次就哪裡開始,相對便宜量也可以再做運算。

      • position(*) char(9):這種相對偏移量+型別和長度的優勢在於,你只需要為第一列指定開始位置,其他列只需要指定列長度就可以。

    • FILLER:控制檔案中指定 FILLER,表示該列值不匯入表中。

  • BEGINDATA:表示以下為待載入資料,僅當 INFILE 指定為 * 時有效

第三部分

資料


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

相關文章