当我们要将一些电影,小说之类的数据存储到数据库中,需要用到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中`ResultSet`的管理和优化,我们可以有效地解决大数据查询所带来的性能问题。通过采用流式数据接收方式、启用服务器端游标以及合理设置`FetchSize`值等策略,可以显著提高大数据查询的效率,同时避免内存...
### JDBC使用MySQL处理大数据及事务控制管理 #### 一、批处理提高性能 在处理大量数据时,直接使用传统的逐条记录方式与数据库进行交互往往会导致性能低下。这是因为每次执行SQL语句时都需要与数据库建立连接、...
### JDBC详解:连接操作数据库、处理大数据、批处理 #### 一、JDBC简介 JDBC,全称为Java DataBase Connectivity(Java数据库连接),是Sun公司(现已被Oracle收购)为了解决不同数据库间的操作差异性而设计的一套...
本文将深入探讨这三个数据库在处理大数据对象时的关键特性、操作方法以及与Java的集成。 首先,Oracle数据库以其强大的性能和企业级功能而闻名。它支持BLOB(Binary Large Object)类型,用于存储大块二进制数据,...
这使得开发人员能够使用标准的JDBC驱动程序来连接到Hive服务器,从而在各种应用程序中方便地进行大数据查询和处理。Hive-jdbc-3.1.1.zip文件包含的是Hive JDBC驱动程序的3.1.1版本,这是一个重要的里程碑,因为它...
5. 利用大数据技术进行数据加工、分析、挖掘、处理,并进行数据可视化,以支持决策制定。 6. 鼓励团队内部的技术交流,跟踪并应用前沿的大数据技术,为团队和业务提供技术支持。 实习期间,实习生需要具备扎实的...
总之,构建大数据监控页面模板涉及Java编程、大数据处理框架、数据可视化、Web开发、前端技术以及实时数据流处理等多个方面。通过合理运用这些技术,可以创建出功能强大、用户友好的大数据监控解决方案。
标题中的“jars大数据开发接口”表明我们讨论的是在大数据处理场景中使用的Java Archive (JAR) 文件。这些JAR包通常包含了各种大数据框架和工具的类库,使得开发者能够利用Java编程语言来构建和执行大数据应用。在这...
在Java编程环境中,大数据导入是一项常见的任务,尤其是在处理海量...总之,Java结合JDBC提供了强大的能力来处理大数据导入。通过合理的设计和优化,我们可以构建出高效稳定的大数据导入工具类,满足企业级应用的需求。
在处理大数据时,分页查询是数据库操作中的一个重要策略,特别是在Web应用中,它能有效减少数据传输量,提高用户体验。Sybase是一个流行的商业关系型数据库管理系统,它支持多种编程接口,包括Java的JDBC(Java ...
它将SQL查询转换为MapReduce任务在Hadoop集群上运行,因此适合处理和分析大数据。 Hive JDBC的使用涉及到以下几个关键知识点: 1. **安装与配置**:下载Hive JDBC的JAR文件后,需要将其添加到运行环境中,通常是...
JDBC 4.2是Java SE 8引入的一个JDBC版本,它扩展了之前版本的功能,提供了更丰富的数据库操作接口,包括对Java 8特性的支持,如日期时间类型、流处理和新的SQL函数等。使用JDBC 4.2的驱动程序,开发者可以编写兼容...
总结来说,CDH的搭建是一个涉及多步骤的过程,需要对大数据组件、操作系统环境和管理工具都有深入的理解。通过Cloudera Manager,企业可以高效地构建和管理自己的大数据平台,实现数据的存储、处理和分析。
总的来说,通过JDBC,开发人员能够方便地在Java应用中集成Hive和Impala,实现对大数据的高效查询和处理。正确配置JDBC驱动和连接参数是成功连接的关键。同时,理解Hadoop生态系统中的安全机制,如Kerberos,也是必不...
在Hive 2.5.15和2.6.1这两个版本中,都包含了对Hive查询语言(HQL)的支持以及对大数据处理的优化。下面我们将详细探讨这两个版本的特性、用途和重要性。 1. **Hive JDBC驱动的作用** - **通用性**:JDBC驱动使得...
综上所述,JDBC的批量操作包括批量插入、批量更新、批量删除等,它们都依赖于`PreparedStatement`的批量处理能力。通过合理的使用这些批量操作,可以显著提高Java应用程序在处理大量数据时的性能和效率。
对于Web开发相关的JavaEE技术如Servlet、JSP、Tomcat、Struts、Spring、Hibernate和Mybatis,虽然在大数据领域应用较少,但了解JDBC以掌握数据库连接是必要的。如果时间允许,深入学习Hibernate或Mybatis的原理可以...