将oracle中blob数据写入文件,再把文件读取插入数据库
来源:互联网 发布:画画的软件手机 编辑:程序博客网 时间:2024/05/20 18:46
今天项目要提供一个版本给现场的同事做测试,并且初始化数据当中有blob数据,所以为了解决这个问题在网上找了好些资料东凑西凑终于把这个给弄好了,代码大概就是这样:
//将数据库中的blob数据存储为txt文件
public static void export(){String url = Global.getConfig("db.rsk.url");//数据连接
String name = Global.getConfig("db.rsk.driver");//数据库驱动
String user = Global.getConfig("db.rsk.username");//用户名
String password = Global.getConfig("db.rsk.password"); //密码
Connection conn = null; //链接对象
PreparedStatement pst = null; //处理对象
try {
Class.forName(name);//指定连接类型
conn = DriverManager.getConnection(url, user, password);//获取连接
pst = conn.prepareStatement("select * from act_ge_bytearray");//准备执行语句
ResultSet ret = pst.executeQuery();//执行语句,得到结果集
int i = 0;//因为有多行数据,所以用个变量来改变文件的名字
while (ret.next()) {
String uid = ret.getString(1); //获取字段值
String ufname = ret.getString(2);
String ulname = ret.getString(3);
String udate = ret.getString(4);
Blob blob = ret.getBlob(5); //获取blob数据
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();//二进制输出流
InputStream inputStream = blob.getBinaryStream();//获取blob的输入流
byte[] buff = new byte[1024]; //存放循环读取的临时数据
int rc = 0;
while ((rc = inputStream.read(buff, 0, 100)) > 0) {//循环读取流
swapStream.write(buff, 0, rc);
}
byte[] fStreamByte = swapStream.toByteArray(); //in_b为转换之后的结果
OutputStream os = new FileOutputStream(new File("F:\\"+i+"a.txt"));//创建文件输出流
os.write(fStreamByte);//写入文件
os.close();
String genareted = ret.getString(6);
i++;
}//显示数据
ret.close();
conn.close();
pst.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//将文件转成blob后插入数据库
public static void imports(){
String [] ids = {"37599fdd70ec4714b699030a3dcbd0af","316e5556ca4f4beaa86ab9e76fe5a54c","13ff24a5f83344c19056e1e5ae77ec11","a7ac28afcf504d70aadd7f071ee0a985"};String url = Global.getConfig("db.rsk.url");//数据连接
String name = Global.getConfig("db.rsk.driver");//数据库驱动
String user = Global.getConfig("db.rsk.username");//用户名
String password = Global.getConfig("db.rsk.password"); //密码
Connection conn = null;
PreparedStatement pst = null;
try {
Class.forName(name);//指定连接类型
conn = DriverManager.getConnection(url, user, password);//获取连接
for(int i = 0;i < 4;i++){
pst = conn.prepareStatement("select * from act_ge_bytearray where id_ = '37599fdd70ec4714b699030a3dcbd0af' for update");//准备执行语句
ResultSet ret = pst.executeQuery();//执行语句,得到结果集
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(new File("F:\\"+i+"a.txt")));
BufferedOutputStream bos = null;
oracle.sql.BLOB image = null;
while (ret.next()) {
image = (oracle.sql.BLOB)ret.getBlob("bytes_"); //获取blob数据
bos = new BufferedOutputStream(image.getBinaryOutputStream());
int c;
while ((c = fis.read()) != -1) { // 将实际文件中的内容以二进制的形式来输出到blob对象对应的输出流中
bos.write(c);
}
bos.close();
fis.close();
}
String writeSql = "update act_test set bytes_ = ? where id_ = ?"; //将blob数据插入到数据库中
PreparedStatement ps = conn.prepareStatement(writeSql);
ps.setBlob(1, image);
ps.setString(2, ids[i]);
ResultSet rs = ps.executeQuery();
rs.close();
}
conn.close();
pst.close();
}catch(Exception e) {
e.printStackTrace();
}
}
阅读全文
0 0
- 将oracle中blob数据写入文件,再把文件读取插入数据库
- 设置oracle中的blob字段,将xml文件写入到数据库中
- 使用utl_file将oracle数据库中数据写入excel文件
- 使用utl_file将oracle数据库中数据写入excel文件
- 将oracle数据库中数据写入excel文件
- java 文件写入oracle数据库blob字段
- 使用存储过程向Oracle数据库中插入BLOB文件
- 插入数据读取数据库写入到Text文件保存
- 将数据库中读取的文件写入Excel文件
- 往Oracle数据库插入图形文件blob
- BLOB读取写入word文件
- java把excel数据写入Oracle数据库(.xls文件)
- java把excel数据写入Oracle数据库(.xls文件)
- Mysql C API把文件写入BLOB类型数据
- [转贴]Java中操作数据库的Blob字段,将文件写入数据库!!!
- JAVA通过Hibernate将文件写入ORACLE数据的BLOB字段 代码示例
- java读取Excel数据,然后写入到txt文件,并批量保存到oracle数据库中
- 笔记:读取sql文件,然后将数据批量插入数据库
- maven常用命令介绍
- android开发注意事项
- 未读消息小红点(badgeview)
- 字符串包含问题
- java中常用排序方法
- 将oracle中blob数据写入文件,再把文件读取插入数据库
- Hadoop学习(三)——Hive学习1
- 使用while语句 写出计算器
- 死磕JVM-Java内存模型
- HTML5新特性
- fiddler替换客户端参数文件
- Intelidea右键新建选项没有Java class选项
- slf4j+logback将日志输出到控制台
- Java中的HashMap源码记录以及并发环境的几个问题