blob字段迁移 MySQL_JDBC修改Blob字段和文件转移

private static void Removetodata2(String path) {

Session session = null;

Connection conn = null;

java.sql.Statement stmt = null;

try {

session = SessionFactory.openSession(EasySQL.ORACLE, "jdbc:oracle:thin:@127.0.0.1:1521:oradb", "data", "data", false, EasySQL.ORACLE_DRIVER);

conn = session.getConnection();

conn = session.getConnection();

boolean defaultCommit = conn.getAutoCommit();

//关闭自动提交

conn.setAutoCommit(false);

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

String str = "FileName State"; //日志头

File file = new File(new Date().getTime() + ".txt"); //插入日志

FileInputStream fis = null;

File folderfiles = new File(path);//文件夹路径

BufferedOutputStream out = null;

BufferedInputStream in = null;

File[] files = folderfiles.listFiles(); //获取所有文件

for (int i = 0; i < files.length; i++) {//第一层目录

File sonfiles = files[i]; //获取子文件夹中的子文件

str += "\r\n";

str += "==========================================" + files[i].getName() + ":文件夹:start==================================================";

count = count + 1;

System.out.println(count + "-开始:=============" + sonfiles.getName());

if (sonfiles.length() < 2 * 1024 * 1024) { //小于2M的文件上传

/**

* 之所以用like 是因为路径问题. file_manage 里面的file_name 里有

* “区划/文件名” 所以like 一下就不用考虑"/"的问题.直接把子文件夹里得的数据拿出来

*/

ResultSet rs = stmt

.executeQuery("select bzgl.file_manage.file_remark2 as qhdm ,data.taizhang.wh as tzwh,bzgl.file_manage.file_wenhao as wenhao,bzgl.file_manage.file_name as filename,data.taizhang.smwjmc as smwjmc,data.taizhang.smwjlx as smwjlx,data.taizhang.smwj as smwj from bzgl.file_manage right join data.taizhang on bzgl.file_manage.file_wenhao= data.taizhang.wh where bzgl.file_manage.file_name like'%"

+ sonfiles.getName() + "%' for update");//锁定选择文件

while (rs.next()) {

fis = new FileInputStream(sonfiles);

accesscount = accesscount + 1; //成功插入个数

String filename = rs.getString("filename");

String wh = rs.getString("tzwh");

//更新该文号下面的台账 扫描文件名称和类型.

Query query = session.createQuery("update taizhang set smwjmc='" + filename.substring(0, filename.indexOf(".")) + "',smwjlx='" + filename.substring(filename.indexOf(".") + 1, filename.length()) + "' where wh='" + wh + "'");

query.executeUpdate();//循环记录 记录一次

if(rs.isLast()){

System.out.println(filename + ":更新完毕");

str += "\r\n";

str +="文号:【"+wh+"】 文件名:【"+ filename + "】 [Access] ";

}

//日志文件记录

oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("smwj");

//批量修改

out = new BufferedOutputStream(blob.getBinaryOutputStream());

in = new BufferedInputStream(fis);

int c = 0;

byte buffer[] = new byte[1024];

while ((c = in.read(buffer)) != -1) {

out.write(buffer);

}

}

//成功的台账文件被存放到另一个地方

fis.close();

File folder= new File(path+File.separator+"台账文件");

if(!folder.exists()){

folder.mkdirs();

}

String newname = folder.getPath() +File.separator+sonfiles.getName() ;

File successfile = new File(newname);

sonfiles.renameTo(successfile);

} else {

File folder= new File(path+File.separator+"文件过大");

if(!folder.exists()){

folder.mkdirs();

}

failcont = failcont + 1;

str += "\r\n";

str += sonfiles.getName() + " [Over MaxSize FileSize:" + (sonfiles.length()) / 1048576 + "M]";

}

str += "\r\n";

str += "==========================================" + files[i].getName() + ":文件夹end==================================================";

}

str += "\r\n";

str += "=========Total:" + count + " Access:" + accesscount + " Failed:" + new Integer(count-accesscount).toString() + "=========";

TextFileWriter.write(file, str);

} catch (ClassNotFoundException e) {

try {

conn.rollback();

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

e.printStackTrace();

} catch (SQLException e) {

try {

conn.rollback();

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

e.printStackTrace();

} catch (Exception e) {

try {

conn.rollback();

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

e.printStackTrace();

}finally{

try {

conn.commit();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值