您好,登錄后才能下訂單哦!
如何理解SQLLDR-CTL文件,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
SQLLDR 可以把一些以文本格式存放的數據順利的導入到oracle數據庫中,是一種在不同數據庫之間進行數據遷移的非常方便而且通用的工具。缺點就速度比較慢,另外對blob等類型的數據不方便。
第一部分
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 指定為 * 時有效
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。