利用SQLLDR載入包含LOB物件的資料(一)
簡單描述一下透過第二資料檔案方式載入LOB型別的方法。
這裡給出一個最簡單的載入例子。
利用SQLLOADER來載入LOB資料,根據LOB資料的儲存方式的不同方法也不相同,如果LOB資料和其他列資料儲存在一起,那麼載入LOB其實和其他列沒有太大的區別,但是這種情況一般來說也比較少見。而一般常見的情況是,每個LOB都單獨儲存在一個檔案中,而主資料檔案中包含每條記錄對應的LOB檔案的路徑和名稱。因此這裡主要討論這種情況。
這篇文章討論最簡單的方式,資料檔案中記錄的是完整的路徑和檔名,而表中有一個單獨的欄位儲存這部分內容。
表結構如下:
SQL> CREATE TABLE T_LOAD_LOB
2 (ID NUMBER PRIMARY KEY,
3 NAME VARCHAR2(100),
4 CREATE_DATE DATE,
5 CONTENTS BLOB);
表已建立。
獨立的LOB檔案來自我的一些文件,控制檔案如下:
LOAD DATA
INFILE *
INTO TABLE T_LOAD_LOB
FIELDS TERMINATED BY ','
(ID CHAR(255),
NAME CHAR(255),
CREATE_DATE SYSDATE,
CONTENTS LOBFILE(NAME) TERMINATED BY EOF)
BEGINDATA
1,d:\study\yangtk\others\2006年總結.doc
2,d:\study\yangtk\others\2007Oracle開發者大會(一).doc
3,d:\study\yangtk\others\2007Oracle開發者大會(二).doc
4,d:\study\yangtk\others\2007年總結.doc
.
.
.
74,d:\study\yangtk\others\問題診斷和PLSQL方面.doc
利用sqlldr執行匯入:
D:\TEMP>SQLLDR TEST/TEST CONTROL=SQLLDR_LOB.CTL
SQL*Loader: Release 10.2.0.5.0 - Production on 星期五 8月 5 17:54:37 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
達到提交點 - 邏輯記錄計數 64
達到提交點 - 邏輯記錄計數 73
達到提交點 - 邏輯記錄計數 74
對應的LOG資訊為:
SQL*Loader: Release 10.2.0.5.0 - Production on 星期五 8月 5 17:54:37 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
控制檔案: SQLLDR_LOB.CTL
資料檔案: SQLLDR_LOB.CTL
錯誤檔案: SQLLDR_LOB.bad
廢棄檔案: 未作指定
(可廢棄所有記錄)
要載入的數: ALL
要跳過的數: 0
允許的錯誤: 50
繫結陣列: 64 行, 最大 256000 位元組
繼續: 未作指定
所用路徑: 常規
表 T_LOAD_LOB,已載入從每個邏輯記錄
插入選項對此表 INSERT 生效
列名 位置 長度 中止 包裝資料型別
------------------------------ ---------- ----- ---- ---- ---------------------
ID FIRST 255 , CHARACTER
NAME NEXT 255 , CHARACTER
CREATE_DATE SYSDATE
CONTENTS DERIVED * EOF CHARACTER
動態 LOBFILE。 檔名在欄位 NAME 中
表 T_LOAD_LOB:
74 行 載入成功。
由於資料錯誤, 0 行 沒有載入。
由於所有 WHEN 子句失敗, 0 行 沒有載入。
由於所有欄位都為空的, 0 行 沒有載入。
為繫結陣列分配的空間: 33024 位元組 (64 行)
讀取 緩衝區位元組數: 1048576
跳過的邏輯記錄總數: 0
讀取的邏輯記錄總數: 74
拒絕的邏輯記錄總數: 0
廢棄的邏輯記錄總數: 0
從 星期五 8月 05 17:54:37 2011 開始執行
在 星期五 8月 05 17:54:45 2011 處執行結束
經過時間為: 00: 00: 07.40
CPU 時間為: 00: 00: 00.28
檢查資料庫中匯入資訊:
SQL> SELECT ID, NAME, TO_CHAR(CREATE_DATE, 'YYYY-MM-DD
HH24:MI:SS')
2
FROM T_LOAD_LOB;
ID NAME TO_CHAR(CREATE_DATE
---------- ------------------------------------------------------------
-------------------
1 d:\study\yangtk\others\2006年總結.doc
2011-08-05 17:54:40
2
d:\study\yangtk\others\2007Oracle開發者大會(一).doc 2011-08-05 17:54:40
3
d:\study\yangtk\others\2007Oracle開發者大會(二).doc 2011-08-05 17:54:40
4 d:\study\yangtk\others\2007年總結.doc 2011-08-05 17:54:40
.
.
.
74 d:\study\yangtk\others\問題診斷和PLSQL方面.doc 2011-08-05 17:54:45
已選擇74行。
至於BLOB欄位的內容是否匯入成功,可以藉助全文索引來進行檢查:
SQL> CREATE INDEX
IND_T_LOB_CONTENTS
2 ON T_LOAD_LOB (CONTENTS)
3 INDEXTYPE IS CTXSYS.CONTEXT;
索引已建立。
SQL> SELECT COUNT(*)
2 FROM T_LOAD_LOB
3 WHERE CONTAINS(CONTENTS, 'ORACLE') > 0;
COUNT(*)
----------
52
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-704308/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用SQLLDR載入包含LOB物件的資料(三)SQL物件
- 利用SQLLDR載入包含LOB物件的資料(二)SQL物件
- 通過SQLLDR匯入LOB資料SQL
- 用sqlloader(sqlldr)裝載LOB資料SQL
- 【sqlldr載入資料】SQL
- 測試TOM=SQLLDR載入日期資料SQL
- expdp測試包含有lob型別的物件型別物件
- sqlldr 載入資料 OGG 是否會同步SQL
- 資料匯入SQLLDRSQL
- 測試TOM==SQLLDR載入固定格式資料SQL
- 測試TOM=SQLLDR使用函式載入資料SQL函式
- Oracle - LOB(大物件資料型別)Oracle物件資料型別
- 測試TOM=用PLSQL載入LOB型別資料SQL型別
- 利用CSV 引擎載入資料
- 解決dbms_lob.loadfromfile載入lob資料後出現亂碼的問題
- sqlldr 匯入資料範例SQL
- 測試TOM=SQLLDR載入內嵌換行符資料SQL
- 文字檔案的資料裝載工具sqlldrSQL
- 採用sqlldr定時將文字檔案載入進入資料庫SQL資料庫
- sqlldr載入效能問題的排查SQL
- ORACLE 的載入工具SQLLDR應用OracleSQL
- 使用oracle sqlldr匯入文字資料的例子OracleSQL
- Oracle lob載入bfile資料到blob欄位中Oracle
- SQLLDR直接載入能否分批提交?SQL
- 後設資料值物件如何載入物件
- oracle資料庫使用sqlldr命令匯入txt資料Oracle資料庫SQL
- 插入LOB物件的方法物件
- 利用IDisposable介面構建包含非託管資源物件物件
- 【實驗】【SQL*Loader】使用SQLLDR將資料載入到CLOB欄位SQL
- 使用sqlldr載入外部檔案中的資料到Oracle中(轉)SQLOracle
- sqlldr批量匯入匯出資料測試SQL
- sqlldr批次匯入匯出資料測試SQL
- sqlldr載入會產生redo嗎?SQL
- 利用ext的combobox載入資料庫資料程式碼例項資料庫
- SQLLDR直接載入幾個引數的測試SQL
- [20140109]sqlldr使用direct=true載入資料的問題.txtSQL
- 【匯入匯出】sqlldr 匯入含有內嵌換行符的資料SQL
- TRUNCATE模式SQLLDR導致SECUREFILE的LOB空間不斷增長模式SQL