大数据的存取

大数据的存取
          基本概念:大数据也称之为LOB(Large Objects),LOB又分为clob和blob
                clob用于存储大文本。
                blob用于存储二进制数据,例如图像、声音、二进制文等。
          对MySQL而言只有blob,而没有clob,mysql存储大文本采用的是Text,Text和blob分别又分为:
                TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
                TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB 
                
          例:
          **********************************************************************************************
          大文本的存取
          use day15;
          create table t1(
                  id int primary key,
                  content longtext
          );
          
          public class ClobDemo {
                  @Test
                  public void testAdd(){
                          Connection conn = null;
                          PreparedStatement stmt = null;
                          try{
                                  conn = JdbcUtil.getConnection();
                                  stmt = conn.prepareStatement("insert into t1 (id,content) value (?,?)");
                                  stmt.setInt(1, 1);
                                  
                                  // 大数据要使用流的形式
                                  File file = new File("c:/jpm.txt");
                                  Reader reader = new FileReader(file);
                                  // 注: 最后一个参数要强转,不能使用long类型的参数,
                                  // 因为mysql最多支持4G的数据大小,该方法只实现了int类型的参数,但是oracle支持long类型的参数    
                                  stmt.setCharacterStream(2, reader, (int)file.length());
                                  
                                  int i = stmt.executeUpdate();
                                  if(i>0){
                                          System.out.println("插入成功");
                                  }
                          }catch(Exception e){
                                  e.printStackTrace();
                          }finally{
                                  JdbcUtil.release(null, stmt, conn);
                          }
                  }

                  @Test
                  public void testRead(){
                          Connection conn = null;
                          PreparedStatement stmt = null;
                          ResultSet rs = null;
                          try{
                                  conn = JdbcUtil.getConnection();
                                  stmt = conn.prepareStatement("select * from t1 where id=?");
                                  stmt.setInt(1, 1);
                                  rs = stmt.executeQuery();
                                  // 大数据要使用流的形式
                                  if(rs.next()){
                                          Reader reader = rs.getCharacterStream("content");
                                          Writer writer = new FileWriter("E:/jpm.txt");
                                          char[] c = new char[1024];
                                          int len = 0;
                                          while((len=reader.read(c))!=-1){
                                                  writer.write(c,0,len);
                                          }
                                          writer.close();
                                          reader.close();
                                  }
                          }catch(Exception e){
                                  e.printStackTrace();
                          }finally{
                                  JdbcUtil.release(rs, stmt, conn);
                          }
                  }
          } 
          **********************************************************************************************
          大二进制数据的存取
          use day15;
          create table t2(
                  id int primary key,
                  content longblob
          );
          
          public class BlobDemo {
                  @Test
                  public void testAdd(){
                          Connection conn = null;
                          PreparedStatement stmt = null;
                          ResultSet rs = null;
                          try{
                                  conn = JdbcUtil.getConnection();
                                  stmt = conn.prepareStatement("insert into t2 (id,content) value(?,?)");
                                  stmt.setInt(1, 1);
                                  
                                  // 大文本数据要采取流的形式
                                  InputStream in = new FileInputStream("c:/1.jpg");
                                  stmt.setBinaryStream(2, in, in.available());   // in.avaulable()为该文件的大小
                                  
                                  int i = stmt.executeUpdate();
                                  if(i>0){
                                          System.out.println("插入成功");
                                  }
                          }catch(Exception e){
                                    e.printStackTrace();
                          }finally{
                                    JdbcUtil.release(rs, stmt, conn);
                          }                  
                  }

                  @Test
                  public void testRead(){
                          Connection conn = null;
                          PreparedStatement stmt = null;
                          ResultSet rs = null;
                          try{
                                  conn = JdbcUtil.getConnection();
                                  stmt = conn.prepareStatement("select * from t2 where id=?");
                                  stmt.setInt(1, 1);
                                  rs = stmt.executeQuery();
                                  
                                  // 大数据要采取流的形式
                                  if(rs.next()){
                                          InputStream in = rs.getBinaryStream("content");
                                          OutputStream out = new FileOutputStream("E:/1.jpg");
                                          byte[] b = new byte[1024];
                                          int len = 0;
                                          while((len=in.read(b))!=-1){
                                                  out.write(b, 0, len);
                                          }
                                          out.close();
                                          in.close();
                                  }
                          }catch(Exception e){
                                  e.printStackTrace();
                          }finally{
                                  JdbcUtil.release(rs, stmt, conn);
                          }
                  }           
          }
          
          **********************************************************************************************


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值