CLOB 定義
資料庫中的一種保存檔案所使用的型別,
Character Large Object
SQL 型別 CLOB 在 JavaTM 編程語言中的映射關系,SQL CLOB 是內置型別,它將字符大物件 (Character Large Object) 存盤為資料庫表某一行中的一個列值,默認情況下,驅動程式使用 SQL locator(CLOB) 實作 Clob 物件,這意味著 CLOB 物件包含一個指向 SQL CLOB 資料的邏輯指標而不是資料本身,Clob 物件在它被創建的事務處理期間有效,
在一些資料庫系統里,也使用Text 作為CLOB的別名,比如SQL Server
BLOB的含義
BLOB (binary large object),二進制大物件,是一個可以存盤二進制檔案的容器,
在計算機中,BLOB常常是資料庫中用來存盤二進制檔案的欄位型別,
BLOB是一個大檔案,典型的BLOB是一張圖片或一個聲音檔案,由于它們的尺寸,必須使用特殊的方式來處理(例如:上傳、下載或者存放到一個資料庫),
根據Eric Raymond的說法,處理BLOB的主要思想就是讓檔案處理器(如資料庫管理器)不去理會檔案是什么,而是關心如何去處理它,
但也有專家強調,這種處理大資料物件的方法是把雙刃劍,它有可能引發一些問題,如存盤的二進制檔案過大,會使資料庫的性能下降,在資料庫中存放體積較大的多媒體物件就是應用程式處理BLOB的典型例子,
CLOB和BLOB的區別
CLOB使用CHAR來保存資料, 如:保存XML檔案,
BLOB就是使用二進制保存資料, 如:保存位圖,
JAVA里面對CLOB的操作
在絕大多數情況下,使用2種方法使用CLOB
1 相對比較小的,可以用String進行直接操作,把CLOB看成字串型別即可
2 如果比較大,可以用 getAsciiStream 或者 getUnicodeStream 以及對應的 setAsciiStream 和 setUnicodeStream 即可
讀取資料
ResultSet rs = stmt.executeQuery("SELECT TOP 1 * FROM Test1");
rs.next();
Reader reader = rs.getCharacterStream(2);
插入資料
PreparedStatement pstmt = con.prepareStatement("INSERT INTO test1 (c1_id, c2_vcmax) VALUES (?, ?)");
pstmt.setInt(1, 1);
pstmt.setString(2, htmlStr);
pstmt.executeUpdate();
更新資料
Statement stmt = con.createStatemet();
ResultSet rs = stmt.executeQuery("SELECT * FROM test1");
rs.next();
Clob clob = rs.getClob(2);
long pos = clob.position("dog", 1);
clob.setString(1, "cat", len, 3);
rs.updateClob(2, clob);
rs.updateRow();
BLOB和CLOB都是大欄位型別,BLOB是按二進制來存盤的,而CLOB是可以直接存盤文字的,其實兩個是可以互換的的,或者可以直接用LOB欄位代替這兩個,但是為了更好的管理ORACLE資料庫,通常像圖片、檔案、音樂等資訊就用BLOB欄位來存盤,先將檔案轉為二進制再存盤進去,而像文章或者是較長的文字,就用CLOB存盤,這樣對以后的查詢更新存盤等操作都提供很大的方便,
oracle中Blob和Clob型別的區別
1.BLOB
BLOB全稱為二進制大型物件(Binary Large Object),它用于存盤資料庫中的大型二進制物件,可存盤的最大大小為4G位元組
2.CLOB
CLOB全稱為字符大型物件(Character Large Object),它與LONG資料型別類似,只不過CLOB用于存盤資料庫中的大型單位元組字符資料塊,不支持寬度不等的字符集,可存盤的最大大小為4G位元組
通常像圖片、檔案、音樂等資訊就用BLOB欄位來存盤,先將檔案轉為二進制再存盤進去,而像文章或者是較長的文字,就用CLOB存盤,這樣對以后的查詢更新存盤等操作都提供很大的方便,
JAVA里面對CLOB的操作
在絕大多數情況下,使用2種方法使用CLOB
1 相對比較小的,可以用String進行直接操作,把CLOB看成字串型別即可
2 如果比較大,可以用 getAsciiStream 或者 getUnicodeStream 以及對應的 setAsciiStream 和 setUnicodeStream 即可
讀取資料
1 ResultSet rs = stmt.executeQuery("SELECT TOP 1 * FROM Test1");
2 rs.next();
3 Reader reader = rs.getCharacterStream(2);
插入資料
1 PreparedStatement pstmt = con.prepareStatement("INSERT INTO test1 (c1_id, c2_vcmax) VALUES (?, ?)");
2 pstmt.setInt(1, 1);
3 pstmt.setString(2, htmlStr);
4 pstmt.executeUpdate();
更新資料
1 Statement stmt = con.createStatemet();
2 ResultSet rs = stmt.executeQuery("SELECT * FROM test1");
3 rs.next();
4 Clob clob = rs.getClob(2);
5 long pos = clob.position("dog", 1);
6 clob.setString(1, "cat", len, 3);
7 rs.updateClob(2, clob);
8 rs.updateRow();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/21720.html
標籤:Oracle
下一篇:SQL Tuning Health-Check Script (SQLHC) (檔案 ID 1366133.1)
