大数据存储问题的代码(初级),没有进行优化的。

代码在前天做好了,但是一直都没时间去修改,
偷下懒吧。
呵呵
放出来只是给大家一点参考。
我用的表示temp。中间有三个属性time(存储系统当前时间),title(文件名称),context(文件中文本内容),
其中测试的是在E盘下的test文件夹下的文件,(文件采用问txt的)。
oracle是10 XE版本的。驱动是class12.
下面就是代码了。

package PreparedTest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;

public class lsat {
 static String driverClass = "oracle.jdbc.driver.OracleDriver";
 static String URL = "jdbc:oracle:thin:@localhost:1521:XE";
 static String USERNAME = "system";
 static String PASSWORD = "duduli";
 static Connection con = null;
 static Statement stmt = null;
 static ResultSet rs = null;
 static String filePathName = null;
 static String fileName = null;
 
 public static String  getFileName(File file){  
        String filename = "";  
        if (file != null){  
                filename = file.getName();  
                int i = filename.lastIndexOf('.');  
                if (i > 0 && i < filename.length()-1){  
                        return filename.substring(0,i);  
                }  
        }  
        return   filename;  
}
 
 
    public static void clobInsert(String filepath)throws Exception {
     try {
      File file = new File(filepath);
      if (file.isDirectory()) {
                  //System.out.println("文件夹");
       String[] filelist = file.list();
       for (int i = 0; i < filelist.length; i++) {
           
     Date dateNow = new Date();     // 取得当前时间
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-hh"); // 对时间进行格式化
     String dateNowStr = dateFormat.format(dateNow);
     System.out.println(dateNowStr);
     
        File readfile = new File(filepath + "\\" + filelist[i]);
           //文件扫描
        filePathName = readfile.getAbsolutePath();
        if (!readfile.isDirectory()) {
         fileName = getFileName(readfile);
         System.out.print("一个文件!\t");
            System.out.println("文件名:"+fileName);
         System.out.println("文件地址"+filePathName);

        } else if (readfile.isDirectory()) {
         fileName = getFileName(readfile);
            System.out.print("一个文件夹!\t");
            System.out.println("文件夹名:"+fileName);
         System.out.println("文件夹地址:"+filePathName);
         clobInsert(filepath + "\\" + filelist[i]);
         }
        
              boolean defaultCommit = con.getAutoCommit();
               con.setAutoCommit(false);
               try {

                   /* 插入一个空的CLOB对象 */

          
          
                   stmt.executeUpdate("INSERT INTO temp VALUES ('"+dateNowStr+"', '"+filePathName+"',EMPTY_CLOB())");
                   /* 查询此CLOB对象并锁定 */
                   ResultSet rs = stmt.executeQuery("SELECT context FROM temp WHERE title='"+filePathName+"' FOR UPDATE");
       
                   while (rs.next()) {
                       /* 取出此CLOB对象 */
                       oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("context");
                       /* 向CLOB对象中写入数据 */
                       BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
                       BufferedReader in = new BufferedReader(new FileReader(fileName));
                       int c;
                       while ((c=in.read())!=-1) {
                           out.write(c);
                       }
                       in.close();
                       out.close();
                   }
                   /* 正式提交 */
                   con.commit();
               } catch (Exception ex) {
                   /* 出错回滚 */
                   con.rollback();
               }
               /* 恢复原提交状态 */
               con.setAutoCommit(defaultCommit);
        }
       }
      
       /* 设定不自动提交 */
 
  }
        catch (FileNotFoundException e) {
        System.out.println("readfile() Exception:" + e.getMessage());
       }
      }
    public static void main(String[] args) throws Exception
    {
        /* 装载驱动,建立数据库连接 */
        Class.forName(driverClass);
        con = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        stmt = con.createStatement();
       
   
       clobInsert("e:/test");

  try {
   if (rs != null) {
    rs.close();
   }
   if (stmt != null) {
    stmt.close();
   }
   if (con != null) {
    con.close();
   }
  } catch (Exception e) {
  }
    }
}



写得很凌乱,大家就勉强看看吧。

posted on 2008-09-15 21:15 duduli 阅读(1555) 评论(2)  编辑  收藏 所属分类: java

评论

# re: 大数据存储问题的代码(初级),没有进行优化的。 2008-09-17 21:26 44you

我google了下,不是oracle.sql.CLOB ,提示,您是不是要找 oracle.sql.BLOB  回复  更多评论   

# re: 大数据存储问题的代码(初级),没有进行优化的。 2008-09-18 12:07 duduli

没错是clob

  CLOB: 字符大对象Clob 用来存储单字节的字符数据
  BLOB: 用于存储二进制数据

@44you
  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

公告

welcome to my place.

常用链接

留言簿(5)

我参与的团队

随笔分类

随笔档案

新闻分类

石头JAVA摆地摊儿

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

@duduli