jdbc大数据处理

来源:互联网 发布:sql 分隔符截取字符串 编辑:程序博客网 时间:2024/04/30 01:09

一:大数据也称为LOF(Large Object),LOB又可分为clob和blob,clob用于存储大文本,blob用于存储二进制数据。

二:在mysql中,只有blob和Text。

Text又可分为TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT

blob又可分为TINYBLOB,BLOB,MEDIUMBLOB和LONGBLOB

三:使用jdbc处理大文本时

1将大文本存入数据库:PreparedStatement.setCharacterStream(index,reader,lenght);注意lenght必须设置为int

2从mysql中读取大文本:

reader = resultSet.getCharacterStream(i);

reader = resultSet.getClob(i).getCharacterStream();

String s = resultSet.getString();

3:二进制数据的存取和读取相似。

四:Oracle定义了一个BLOB字段用于保存二进制数据,但这个字段并不能存放真正的二进制数据,只能向这个字段存一个指针,然后把数据放到指针所指向的Oracle的LOB段中, LOB段是在数据库内部表的一部分。

因而在操作Oracle的Blob之前,必须获得指针(定位器)才能进行Blob数据的读取和写入。

如何获得表中的Blob指针呢? 可以先使用insert语句向表中插入一个空的blob(调用oracle的函数empty_blob() ),这将创建一个blob的指针,然后再把这个empty的blob的指针查询出来,这样就可得到BLOB对象,从而读写blob数据了。

1、插入空blob
insert into test(id,image) values(?,empty_blob());

2、获得blob的cursor
select image from test where id= ? for update;
Blob b = rs.getBlob(“image”);

•注意: 须加for update,锁定该行,直至该行被修改完毕,保证不产生并发冲突。

3、利用 io,和获取到的cursor往数据库读写数据

l注意:以上操作需开启事务。

原创粉丝点击