当我们要将一些电影,小说之类的数据存储到数据库中,需要用到oracle的大对象数据类型:Blob,Clob,其中blob为二进制的大对象,clob为字符串大对象。
如何用JDBC来将这样的大数据存储到数据库中了?需要用到empty_blob()函数。以下是一个实现blob的完整的例子:
1:创建一张能装大数据的表:
create table largetable
( id number(7) primary key,
name varchar2(15) not null,
largefile blob
);
2:选取系统中的一个文件通过JDBC存到数据库中,代码如下:
import java.sql.*;
import com.UtilTool.*;
import java.io.*;
public class BlobTest {
public static void insertBlob(String filename){
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
try{
conn=ConnectTool.getConnection();//获取连接
conn.setAutoCommit(false);//设置事务提交为手动
stm=conn.createStatement();
/*empty_blob:oracle 提供的单行函数,向里面插入空的blob值,随后用//IO流向里面写。*/
String sql="insert into largeTable(id,name,largefile) values(5,'file2',empty_blob())";
stm.executeUpdate(sql);
sql="select largefile from largetable where id=5";
rs=stm.executeQuery(sql);
if(rs.next()){
Blob blo=rs.getBlob(1);//获取该对象
oracle.sql.BLOB bo=(oracle.sql.BLOB)blo;
OutputStream os=bo.getBinaryOutputStream();
InputStream is=new FileInputStream(filename);
byte[] b=new byte[1024];
int len=0,num=0;
while(true){
len=is.read(b);
if(len<=0) break;
os.write(b,0,len);
if(++num%10==0){
System.out.println("10 k ok");
}
}
is.close();
os.close();
}
conn.commit();
}catch(Exception e){
e.printStackTrace();
if(conn!=null) try{conn.rollback();}catch(Exception ee){ee.printStackTrace();}
}finally{
ConnectTool.releasersc(rs, stm, conn);
}
}
public static void queryBlob(String name){
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
try{
conn=ConnectTool.getConnection();
conn.setAutoCommit(false);
stm=conn.createStatement();
String sql="select largefile from largetable where name='"+name+"'";
System.out.println(sql);
rs=stm.executeQuery(sql);
if(rs.next()){
Blob blo=rs.getBlob(1);
System.out.println(blo);
InputStream is=blo.getBinaryStream();
OutputStream os=new FileOutputStream("copy.rar");
byte[] b=new byte[1024];
int len=0,num=0;
while(true){
len=is.read(b);
if(len<=0) break;
os.write(b,0,len);
if(++num%100==0){
System.out.println("1m ok");
}
}
is.close();
os.close();
}
conn.commit();
}catch(Exception e){
if(conn!=null) try{ conn.rollback();} catch(Exception ee){}
}finally{
ConnectTool.releasersc(rs, stm, conn);
}
}
public static void main(String args[]){
System.out.println("123");
insertBlob("E:\\123.rar");
queryBlob("file2");
}
}
分享到:
相关推荐
JDBC使用MySQL处理大数据+事务控制管理.txt
详细介绍JDBC的连接操作数据库、处理大数据、批处理使用操作 Sun公司为了简化数据库开发,定义了一套JDBC接口,这套接口由数据库厂商去实现,这样,开发人员只需要学习JDBC接口, 并通过JDBC加载具体的驱动,就可以...
本篇文章主要介绍了JDBC处理MySQL大数据,有时是需要用程序把大文本或二进制数据直接保存到数据库中进行储存的,非常具有实用价值,需要的朋友可以参考下。
SQL 分析 挖掘预测 图形化数据分析 智能搜索 时间、用户、地理位置、事件 等标签 辅助技术: Kafka, HBase, Cassandra, Accumulo 基于大数据技术的数据分析处理 Hadoop 核心层 数据准备 大数据与大数据技术(1)全文...
SQL 分析 挖掘预测 图形化数据分析 智能搜索 时间、用户、地理位置、事件 等标签 辅助技术: Kafka, HBase, Cassandra, Accumulo 基于大数据技术的数据分析处理 Hadoop 核心层 数据准备 大数据与大数据技术全文共59...
多数使用Hadoop技术处理大数据业务的企业,有大量的数据存储在关系型数据中。由于没有工具支持,Hadoop和关系型数据库之间的数据传输是很困难的事情。传统的应用程序管理系统,即应用程序与使用RDBMS的关系数据库的...
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
本系统利用大数据技术,合理的为用户做出推荐,推荐的结果可靠程度很高,这就是我的优势所在,因为它和一般的推荐系统的推荐算法不太一样,我的推荐算法是利用Hadoop技术写的,我们可以利用Hadoop集群的高吞吐量,一...
关键特性: 线性扩展 7 增加一个新结点到VoltDB集群可以有限提升集群的最大吞吐量,也可以增加整个集群的内存容量 集群的大小对应用来说是透明的 高频大数据解决方案全文共28页,当前为第7页。 关键特性: 线性扩展...
因此这篇文章旨在梳理市面上常见的开源技术方案,背后原理及应用场景,帮助产品经 理对大数据技术体系有个大致全面的了解。 一般来说,我们将数据整个链条区分为四个环节,从数据采集传输,到数据存储,再到 数据...
Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。 换句话说,Impala是性能最高的...
Kyuubi的目标是促进用户处理大数据(如普通数据)。 它提供了标准化的JDBC接口,在大数据场景中具有易于使用的数据访问。 最终用户可以专注于开发自己的业务系统并挖掘数据价值,而不必了解底层的大数据平台(计算...
只要掌握Spark,就能够为大多数的企业的大数据应用场景提供明显的加速。存储层:HDFS作为底层存储,Hive作为数据仓库 (Hive Metastore:Hive管理数据的schema) 离线数据处理:SparkSQL (做数据查询引擎<===> 数据...
只要掌握Spark,就能够为大多数的企业的大数据应用场景提供明显的加速。存储层:HDFS作为底层存储,Hive作为数据仓库 (Hive Metastore:Hive管理数据的schema) 离线数据处理:SparkSQL (做数据查询引擎<===> 数据...
Java数据库编程 数据库编程, JDBC2.0操作 preparedstatement接口 处理大数据对象,处理clob数据 在elipse中找到驱动mysql的方法
本资源为大数据基础到中高级教学资源,适合稍微有点大数据或者java基础的人群学习,资源过大,上传乃是下载链接,不多说,上目录: 1_java基础2 l3 a2 a$ t7 J2 b+ `- p 2_java引入ide-eclipse 3_java基础知识-循环...
只要掌握Spark,就能够为大多数的企业的大数据应用场景提供明显的加速。存储层:HDFS作为底层存储,Hive作为数据仓库 (Hive Metastore:Hive管理数据的schema) 离线数据处理:SparkSQL (做数据查询引擎<===> 数据...
只要掌握Spark,就能够为大多数的企业的大数据应用场景提供明显的加速。存储层:HDFS作为底层存储,Hive作为数据仓库 (Hive Metastore:Hive管理数据的schema) 离线数据处理:SparkSQL (做数据查询引擎<===> 数据...
只要掌握Spark,就能够为大多数的企业的大数据应用场景提供明显的加速。存储层:HDFS作为底层存储,Hive作为数据仓库 (Hive Metastore:Hive管理数据的schema) 离线数据处理:SparkSQL (做数据查询引擎<===> 数据...
只要掌握Spark,就能够为大多数的企业的大数据应用场景提供明显的加速。存储层:HDFS作为底层存储,Hive作为数据仓库 (Hive Metastore:Hive管理数据的schema) 离线数据处理:SparkSQL (做数据查询引擎<===> 数据...