利用SQLLDR載入包含LOB物件的資料(二)
簡單描述一下透過第二資料檔案方式載入LOB型別的方法。
介紹複雜一點的,檔名和目錄在表中分別儲存的情況。
利用SQLLDR載入包含LOB物件的資料(一):http://yangtingkun.itpub.net/post/468/521873
如果匯入資料的檔名是完整的,但是在資料庫中目錄和檔名分別儲存,這時表結構中並不需要一個完整的FULL_NAME,但是控制檔案中FULL_NAME用作LOB的LOGFILE讀取列還是必須的,而且需要設定為BOUNDFILLER,而不能是FILLER。
表結構如下:
SQL> DROP TABLE T_LOAD_LOB PURGE;
表已刪除。
SQL> CREATE TABLE T_LOAD_LOB
2 (ID NUMBER,
3 NAME VARCHAR2(80),
4 DIRECTORY VARCHAR2(30),
5 CREATE_DATE DATE,
6 CONTENTS BLOB);
表已建立。
控制檔案如下:
LOAD DATA
INFILE *
INTO TABLE T_LOAD_LOB
FIELDS TERMINATED BY ','
(ID CHAR(255),
FULL_NAME BOUNDFILLER CHAR(255),
DIRECTORY EXPRESSION "SUBSTR(:FULL_NAME, 1, INSTR(:FULL_NAME, '\\',
-1))",
NAME EXPRESSION "SUBSTR(:FULL_NAME, INSTR(:FULL_NAME, '\\', -1) +
1)",
CREATE_DATE SYSDATE,
CONTENTS LOBFILE(FULL_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
執行匯入過程:
D:\TEMP>SQLLDR TEST/TEST CONTROL=SQLLDR_LOB2.CTL
SQL*Loader: Release 10.2.0.5.0 - Production on 星期日 8月 7 22:37:28 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
達到提交點 - 邏輯記錄計數 64
達到提交點 - 邏輯記錄計數 73
達到提交點 - 邏輯記錄計數 74
檢查匯入日誌:
SQL*Loader: Release 10.2.0.5.0 - Production on 星期日 8月 7 22:37:28 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
控制檔案:
SQLLDR_LOB2.CTL
資料檔案:
SQLLDR_LOB2.CTL
錯誤檔案: SQLLDR_LOB2.bad
廢棄檔案: 未作指定
(可廢棄所有記錄)
要載入的數: ALL
要跳過的數: 0
允許的錯誤: 50
繫結陣列: 64 行, 最大 256000 位元組
繼續: 未作指定
所用路徑: 常規
表 T_LOAD_LOB,已載入從每個邏輯記錄
插入選項對此表 INSERT 生效
列名 位置 長度 中止 包裝資料型別
------------------------------ ---------- ----- ---- ---- ---------------------
ID
FIRST 255 ,
CHARACTER
FULL_NAME
NEXT 255 ,
CHARACTER
(BOUNDFILLER FIELD)
DIRECTORY
表示式
列的 SQL 串: "SUBSTR(:FULL_NAME, 1, INSTR(:FULL_NAME, '\', -1))"
NAME
表示式
列的 SQL 串: "SUBSTR(:FULL_NAME, INSTR(:FULL_NAME, '\', -1) + 1)"
CREATE_DATE
SYSDATE
CONTENTS
DERIVED * EOF
CHARACTER
動態 LOBFILE。 檔名在欄位 FULL_NAME 中
表 T_LOAD_LOB:
74 行 載入成功。
由於資料錯誤, 0 行
沒有載入。
由於所有 WHEN 子句失敗, 0 行 沒有載入。
由於所有欄位都為空的, 0 行
沒有載入。
為繫結陣列分配的空間: 33024 位元組 (64 行)
讀取 緩衝區位元組數: 1048576
跳過的邏輯記錄總數: 0
讀取的邏輯記錄總數:
74
拒絕的邏輯記錄總數:
0
廢棄的邏輯記錄總數:
0
從 星期日 8月 07 22:37:28 2011 開始執行
在 星期日 8月 07 22:37:33 2011 處執行結束
經過時間為: 00: 00: 04.73
CPU 時間為: 00: 00: 00.17
檢查資料載入情況:
SQL> SELECT ID, NAME, DIRECTORY, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')
2 FROM T_LOAD_LOB;
ID NAME DIRECTORY TO_CHAR(SYSDATE,'YY
---------- ------------------------------- ----------------------------
-------------------
1 2006年總結.doc d:\study\yangtk\others\ 2011-08-07 22:42:01
2 2007Oracle開發者大會(一).doc d:\study\yangtk\others\ 2011-08-07 22:42:01
3 2007Oracle開發者大會(二).doc d:\study\yangtk\others\ 2011-08-07 22:42:01
4 2007年總結.doc d:\study\yangtk\others\ 2011-08-07
22:42:01
.
.
.
74 問題診斷和PLSQL方面.doc d:\study\yangtk\others\ 2011-08-07 22:42:01
已選擇74行。
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
對於檔名和目錄分別儲存的情況,可以利用EXPRESSION來從FULL_NAME中透過SQL函式來獲取需要的資訊,而FULL_NAME定義為BOUNDFILLER,這樣並不需要FULL_NAME在表中存在,還可以使用LOBFILE從FULL_NAME中讀取LOB。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-704370/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用IDisposable介面構建包含非託管資源物件物件
- Pytorch系列:(二)資料載入PyTorch
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- 學習筆記15:第二種載入資料的方法筆記
- 資料載入
- Swagger 響應資料 response 裡包含動態變化的物件 key 的方法Swagger物件
- 亞信安慧AntDB資料並行載入工具的實現(二)並行
- 利用Resource Timing監控資源載入速度
- 一次sqlldr匯入慢的解決過程SQL
- 利用vstruct解析二進位制資料Struct
- 利用 Matplotlib 繪製資料圖形(二)
- 如何檢視ORACLE的LOB(BLOB和CLOB)物件佔用的大小Oracle物件
- 資料載入、儲存及檔案格式知識圖譜-《利用Python進行資料分析》Python
- 利用實體bean物件批量資料傳輸處理Bean物件
- .Net Core利用反射動態載入類庫的方法(解決類庫不包含Nuget依賴包的問題)反射
- 【LOB】Oracle Lob管理常用sqlOracleSQL
- JavaScript 基礎 (二) - 引用資料型別 (物件)JavaScript資料型別物件
- tensorflow載入資料的三種方式
- pytorch載入imagenet的floder資料集PyTorch
- Comparitech:英美大多數二手硬碟包含以前所有者的資料硬碟
- Python資料分析入門(二)Python
- 【LOB】Oracle lob管理常用語句Oracle
- Docker 入門系列二:容器的資料卷Docker
- 建立包含N個空物件的陣列物件陣列
- 前端利用Blob物件建立指定檔案並下載前端物件
- ListView動態載入資料View
- WPFDataGrid效能載入大資料大資料
- Docker入門-資料掛載Docker
- Pytorch資料載入與使用PyTorch
- MySQL load xml載入資料MySqlXML
- MySQL load data載入資料MySql
- 載入專案常量配置物件物件
- 從入門到入獄------物件導向(二)物件
- 研究表明英美大多數二手硬碟包含以前所有者的資料硬碟
- 大資料學習之路——java物件導向(二)大資料Java物件
- 利用Data Vault對資料倉儲進行建模(二)
- Spring——4. Bean的載入(二)SpringBean
- 要複製的LOB資料的長度超出了配置的最大值65536
- SharpZipLib解壓資料夾 包含空資料夾