大資料,大文字的處理 JDBC啊!

2021-06-01 22:05:40 字數 1543 閱讀 8649

處理大資料

使用jdbc處理大資料:

基本概念:大資料也稱之為lob(large objects),lob又分為:clob和blob——clob用於儲存大文字。text

blob用於儲存二進位制資料,例如影象、聲音、二進位製文等。

對mysql而言只有blob,而沒有clob,mysql儲存大文字採用的是text,text和blob分別又分為:

(1)tinytext、text、mediumtext和longtext

(2)tinyblob、blob、mediumblob和longblob 

使用jdbc處理大文字:

對於mysql中的text型別,可呼叫如下方法設定:  preparedstatement.setcharacterstream(index,reader,length);

//注意length長度須設定,並且設定為int型。

對mysql中的text型別,可呼叫如下方法獲取:

reader = resultset. getcharacterstream(i);

reader = resultset.getclob(i).getcharacterstream();

string s = resultset.getstring(i);

使用jdbc處理二進位制資料:

對於mysql中的blob型別,可呼叫如下方法設定:

preparedstatement. setbinarystream(i, inputstream, length);

對mysql中的blob型別,可呼叫如下方法獲取:

inputstream in  = resultset.getbinarystream(i);

inputstream in  = resultset.getblob(i).getbinarystream(); 

在oracle中大資料處理:

oracle定義了乙個blob欄位用於儲存二進位制資料,但這個欄位並不能存放真正的二進位制資料,只能向這個欄位存乙個指標,然後把資料放到指標所指向的oracle的lob段中, lob段是在資料庫內部表的一部分。

因而在操作oracle的blob之前,必須獲得指標(定位器)才能進行blob資料的讀取和寫入。

如何獲得表中的blob指標呢? 可以先使用insert語句向表中插入乙個空的blob(呼叫oracle的函式empty_blob()  ),這將建立乙個blob的指標,然後把這個empty的blob的指標查詢出來,這樣就可得到blob物件,從而讀寫blob資料。 

oracle中lob型別的處理:

插入空blob 

insert into test(id,image) values(?,empty_blob()); 

獲得blob的cursor 

select image from test where id= ? for update; 

blob b = rs.getblob(「image」);

注意:  須加for update,鎖定該行,直至該行被修改完畢,保證不產生併發衝突。 利用 io,和獲取到的cursor往資料庫讀寫資料

注意:以上操作需開啟事務。

JDBC處理大資料

使用mysql資料庫也可以處理大資料,在實際開發中需要把大文字或者二進位制資料儲存到資料庫中去。clob是用來儲存大文字的,mysql資料庫不支援。bclob用於儲存二進位制資料,例如 影象 聲音 二進位制檔案等。對於mysql的text型別,可呼叫如下方法設定 preparedstatment.s...

JDBC處理大文字之clob

概念性的內容就不多說了,不懂得可以參考api。下面直接貼出來 如何將clob型別的文字存入資料庫 將clob型別的資料寫入資料庫中 param student return throws exception public static int addstudent student student t...

使用JDBC處理大資料

在實際開發中,程式需要把大文字或二進位制資料儲存到資料庫。基本概念 大資料也稱之為lob large objects lob 又分為 clob 和blob clob用於儲存大文字。text blob用於儲存二進位制資料,例如影象 聲音 二進位製文等。對mysql 而言只有 blob 而沒有 clob...