【實驗】【SQL*Loader】使用SQLLDR將資料載入到CLOB欄位
上文提到,使用SQL*Loader工具載入資料到LOB欄位比較複雜,真的是那樣麼?這個小文兒演示一下載入資料到CLOB欄位。
這裡“上文”指:《【實驗】【SQL*Loader】使用SQLLDR將Linux的使用者檔案passwd匯入資料庫》http://space.itpub.net/519536/viewspace-613574
1.建立一個非常簡單的包含CLOB欄位的表t_sqlldr_clob
sec@secooler> create table t_sqlldr_clob (product_name varchar2(30),description clob);
Table created.
2.準備控制檔案如下
secooler@db10gr2 /home/oracle$ cat load_t_sqlldr_clob.ctl
LOAD DATA
INFILE *
INTO TABLE t_sqlldr_clob
REPLACE
FIELDS TERMINATED BY ','
( product_name ,
description
)
BEGINDATA
Rubik,This column contains a lot of descriptions about the Rubik Cube.
Toy,This column contains a lot of descriptions about the Toy.
3.使用SQLLDR命令列工具匯入CLOB資料
secooler@db10gr2 /home/oracle$ sqlldr sec/sec control=load_t_sqlldr_clob.ctl
SQL*Loader: Release 10.2.0.3.0 - Production on Mon Aug 31 19:55:23 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Commit point reached - logical record count 2
4.檢視一下操作的日誌檔案
secooler@db10gr2 /home/oracle$ cat load_t_sqlldr_clob.log
SQL*Loader: Release 10.2.0.3.0 - Production on Mon Aug 31 19:55:23 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Control File: load_t_sqlldr_clob.ctl
Data File: load_t_sqlldr_clob.ctl
Bad File: load_t_sqlldr_clob.bad
Discard File: none specified
(Allow all discards)
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional
Table T_SQLLDR_CLOB, loaded from every logical record.
Insert option in effect for this table: REPLACE
Column Name Position Len Term Encl Datatype
----------------- ---------- ----- ---- ---- -----------
PRODUCT_NAME FIRST * , CHARACTER
DESCRIPTION NEXT * , CHARACTER
Table T_SQLLDR_CLOB:
2 Rows successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Space allocated for bind array: 33024 bytes(64 rows)
Read buffer bytes: 1048576
Total logical records skipped: 0
Total logical records read: 2
Total logical records rejected: 0
Total logical records discarded: 0
Run began on Mon Aug 31 19:55:23 2009
Run ended on Mon Aug 31 19:55:23 2009
Elapsed time was: 00:00:00.07
CPU time was: 00:00:00.02
5.到資料庫中檢視一下
secooler@db10gr2 /home/oracle$ sqlplus sec/sec
SQL*Plus: Release 10.2.0.3.0 - Production on Mon Aug 31 19:56:59 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
sec@secooler> desc t_sqlldr_clob
Name Null? Type
----------------- -------- ------------
PRODUCT_NAME VARCHAR2(30)
DESCRIPTION CLOB
sec@secooler> select * from t_sqlldr_clob;
PRODUCT DESCRIPTION
------- ---------------------------------------------
Rubik This column contains a lot of descriptions about the Rubik Cube.
Toy This column contains a lot of descriptions about the Toy.
OK,匯入成功,與普通欄位的匯入完全一樣,就是這麼普通和簡單!
6.小結
既然匯入的過程這麼簡單,那為什麼還要提到LOB欄位的匯入比較複雜呢?
因為在真實的生產環境裡,LOB欄位中存放的資訊遠遠沒有我這個實驗中提到的這麼簡單。
例如,LOB欄位中的資訊存在“換行符號”,例如本例中的DESCRIPTION欄位每行的描述資訊是由多行資訊組成,或者生產環境中的XML類資料,需要處理換行符號如何入庫的問題。
如此種種的問題都會增加資料匯入的困難程度,需要細心的對待和處理,往往有的時候需要對待匯入的資料需要“預處理”一下,以便無誤的匯入到LOB中。
-- The End --
這裡“上文”指:《【實驗】【SQL*Loader】使用SQLLDR將Linux的使用者檔案passwd匯入資料庫》http://space.itpub.net/519536/viewspace-613574
1.建立一個非常簡單的包含CLOB欄位的表t_sqlldr_clob
sec@secooler> create table t_sqlldr_clob (product_name varchar2(30),description clob);
Table created.
2.準備控制檔案如下
secooler@db10gr2 /home/oracle$ cat load_t_sqlldr_clob.ctl
LOAD DATA
INFILE *
INTO TABLE t_sqlldr_clob
REPLACE
FIELDS TERMINATED BY ','
( product_name ,
description
)
BEGINDATA
Rubik,This column contains a lot of descriptions about the Rubik Cube.
Toy,This column contains a lot of descriptions about the Toy.
3.使用SQLLDR命令列工具匯入CLOB資料
secooler@db10gr2 /home/oracle$ sqlldr sec/sec control=load_t_sqlldr_clob.ctl
SQL*Loader: Release 10.2.0.3.0 - Production on Mon Aug 31 19:55:23 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Commit point reached - logical record count 2
4.檢視一下操作的日誌檔案
secooler@db10gr2 /home/oracle$ cat load_t_sqlldr_clob.log
SQL*Loader: Release 10.2.0.3.0 - Production on Mon Aug 31 19:55:23 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Control File: load_t_sqlldr_clob.ctl
Data File: load_t_sqlldr_clob.ctl
Bad File: load_t_sqlldr_clob.bad
Discard File: none specified
(Allow all discards)
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional
Table T_SQLLDR_CLOB, loaded from every logical record.
Insert option in effect for this table: REPLACE
Column Name Position Len Term Encl Datatype
----------------- ---------- ----- ---- ---- -----------
PRODUCT_NAME FIRST * , CHARACTER
DESCRIPTION NEXT * , CHARACTER
Table T_SQLLDR_CLOB:
2 Rows successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Space allocated for bind array: 33024 bytes(64 rows)
Read buffer bytes: 1048576
Total logical records skipped: 0
Total logical records read: 2
Total logical records rejected: 0
Total logical records discarded: 0
Run began on Mon Aug 31 19:55:23 2009
Run ended on Mon Aug 31 19:55:23 2009
Elapsed time was: 00:00:00.07
CPU time was: 00:00:00.02
5.到資料庫中檢視一下
secooler@db10gr2 /home/oracle$ sqlplus sec/sec
SQL*Plus: Release 10.2.0.3.0 - Production on Mon Aug 31 19:56:59 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
sec@secooler> desc t_sqlldr_clob
Name Null? Type
----------------- -------- ------------
PRODUCT_NAME VARCHAR2(30)
DESCRIPTION CLOB
sec@secooler> select * from t_sqlldr_clob;
PRODUCT DESCRIPTION
------- ---------------------------------------------
Rubik This column contains a lot of descriptions about the Rubik Cube.
Toy This column contains a lot of descriptions about the Toy.
OK,匯入成功,與普通欄位的匯入完全一樣,就是這麼普通和簡單!
6.小結
既然匯入的過程這麼簡單,那為什麼還要提到LOB欄位的匯入比較複雜呢?
因為在真實的生產環境裡,LOB欄位中存放的資訊遠遠沒有我這個實驗中提到的這麼簡單。
例如,LOB欄位中的資訊存在“換行符號”,例如本例中的DESCRIPTION欄位每行的描述資訊是由多行資訊組成,或者生產環境中的XML類資料,需要處理換行符號如何入庫的問題。
如此種種的問題都會增加資料匯入的困難程度,需要細心的對待和處理,往往有的時候需要對待匯入的資料需要“預處理”一下,以便無誤的匯入到LOB中。
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-613651/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單介紹2種Java讀取Oracle大欄位資料(CLOB)的方法JavaOracle
- 使用hibernate校驗欄位
- 將多個JSON欄位對映到單個Java欄位JSONJava
- 包括clob segment 大欄位 表的大小統計
- 使用 useLazyAsyncData 提升資料載入體驗
- 將list型別對映到資料欄位 @TableField(typeHandler = StringListTypeHandler.class)型別
- pydantic 欄位欄位校驗
- SQL字元型欄位按數字型欄位排序實現方法SQL字元排序
- 使用Java客戶端將資料載入到Grakn知識圖中Java客戶端
- SQL Server中獲取資料庫名、表名、欄位名和欄位註釋的SQL語句SQLServer資料庫
- 如何將外部資料庫 匯入到系統的SQL中資料庫SQL
- 達夢dmfldr載入大欄位
- 使用SQL語言 替換資料庫某欄位內的部分內容SQL資料庫
- hive將查詢資料插入表中某欄位無資料Hive
- 教你如何將二進位制檔案匯入到資料庫資料庫
- Spark SQL使用簡介(3)--載入和儲存資料SparkSQL
- 資料庫欄位設定非空, phalcon建立資料驗證不透過資料庫
- 模型資料追加欄位模型
- sql語句修改欄位型別和增加欄位SQL型別
- 使用bundle-loader非同步載入react-router非同步React
- 為什麼資料庫欄位要使用NOT NULL?資料庫Null
- thinkphp validate unique 資料庫欄位唯一性校驗PHP資料庫
- 資料庫運維初入門-SQL Server入門到跑路002-初使用資料庫運維SQLServer
- DB2_更新SQL欄位DB2SQL
- mybatis 實體類排除資料庫欄位對映MyBatis資料庫
- 簡單sql欄位解析器實現參考SQL
- jdk8將集合中的資料聚合成想要的欄位JDK
- 將資料庫照片大欄位下卸到檔案系統,照片檔名以某一個欄位命名資料庫
- 快速將下劃線欄位改為駝峰欄位
- SAP QM 主檢驗特性主資料關鍵欄位解釋
- gordensong/laravel-table-validator 資料表欄位驗證收集器GoLaravel
- 使用Oracle SQL Developer匯入Excel資料OracleSQLDeveloperExcel
- 在登入資料庫的使用!sql資料庫SQL
- 將表結構轉換成實體欄位
- 多欄位登入
- .NET Core使用NPOI將Excel中的資料批量匯入到MySQLExcelMySql
- odps平臺將資料匯入到hdfs
- Sqoop將MySQL資料匯入到hive中OOPMySqlHive
- C# 將資料寫入到Excel表格C#Excel