天天看點

JDBC大文本資料處理淺談

核心問題:

 1.資料分類:文本,圖檔/視訊等

 2.jdbc中如何分别設定/擷取

一、大資料也稱之為LOB(Large Objects),LOB又分為:clob和blob

  clob用于存儲大文本。

    blob用于存儲二進制資料,例如圖像、聲音、二進制文等。

    (對于不同的資料庫有不同的實作)

二、下面以java---mysql為例

  對MySQL而言隻有blob,而沒有clob,mysql存儲大文本采用的是Text

   (也就是說,clob---Test;blob---blob)

  具體類型:

     Test:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT

        blob:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB

    1.Test

     JDBC設定Test(注意,不是test,而是CharacterStream)

     PreparedStatement.setCharacterStream(index, reader, length);

    從Mysql擷取:

       方法1:reader = resultSet. getCharacterStream(i);

     方法2:reader = resultSet.getClob(i).getCharacterStream();//(我一般使用這個方法)

     方法3:string s = resultSet.getString(i);

  2.blob

  設定:

      PreparedStatement. setBinaryStream(i,inputStream, length);

  擷取:

     方法1:InputStreamin  = resultSet.getBinaryStream(i);//常用

     方法2:InputStreamin  =resultSet.getBlob(i).getBinaryStream();

三、對于真正的大資料,一般是将路徑存于資料庫,通過查資料庫找到路徑,再通過IO流來讀取(NIO沒有學,不了解)

    還有一個問題,當檔案超過jvm大小時,也就是對于千萬級資料的處理,有是與此不同;再往深裡研究,那就再加上分布式(沒有接觸到,接觸到了和大家分享)。