zoukankan      html  css  js  c++  java
  • 使用JDBC处理MySQL大数据

    大数据也称之为LOB(Large Objects),LOB又分为:clob和blob

    clob字符型大型对象用于存储大文本,如历史档案、大部头著作等;blob二进制大型对象用于存储二进制数据,如程序、图象、影音等。

      对MySQL而言只有blob,而没有clob,mysql存储大文本采用的是Text,
      Text:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
      blob:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB

    使用JDBC处理MySQL的大文本Text

      对于MySQL中的Text类型,可调用如下方法设置

     PreparedStatement.setCharacterStream(index, reader, length);//注意length长度须设置,并且设置为int型

    对MySQL中的Text类型,可调用如下方法获取

     Reader reader = resultSet. getCharacterStream(String columnLabel);

    string s = resultSet.getString(String columnLabel);

     

    例子:

                String contentStr ="";
                String content = "";
                if(rs.next()){
                    //使用resultSet.getString("字段名")获取大文本数据的内容
                    content = rs.getString("resume");
                    //使用resultSet.getCharacterStream("字段名")获取大文本数据的内容
                    Reader reader = rs.getCharacterStream("resume");
                    char buffer[] = new char[1024];
                    int len = 0;
                    FileWriter out = new FileWriter("D:\1.txt");
                    while((len=reader.read(buffer))>0){
                        contentStr += new String(buffer);
                        out.write(buffer, 0, len);
                    }
                    out.close();
                    reader.close();
                }

    使用JDBC处理MySQL的二进制数据blob

      对于MySQL中的BLOB类型,可调用如下方法设置:

     PreparedStatement.setBinaryStream(i, inputStream, length);

      对MySQL中的BLOB类型,可调用如下方法获取:

    InputStream in  = resultSet.getBinaryStream(String columnLabel);
    InputStream in  = resultSet.getBlob(String columnLabel).getBinaryStream(); 

    代码片段:

    if (rs.next()) {
                    //InputStream in = rs.getBlob("image").getBinaryStream();//这种方法也可以
                    InputStream in = rs.getBinaryStream("image");
                    int len = 0;
                    byte buffer[] = new byte[1024];
                    
                    FileOutputStream out = new FileOutputStream("D:\1.jpg");
                    while ((len = in.read(buffer)) > 0) {
                        out.write(buffer, 0, len);
                    }
                    in.close();
                    out.close();
                }

     参考链接:https://www.cnblogs.com/xdp-gacl/p/3982581.html

  • 相关阅读:
    浅析8种常用排序
    尾递归和线性递归
    线性表之顺序表
    安装minikube
    error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
    fatal error: 'openssl/conf.h' file not found
    GraphQL 最突出的架构优势是什么?
    mac 安装 brew
    Clean Architecture
    sql优化
  • 原文地址:https://www.cnblogs.com/huangdabing/p/9187064.html
Copyright © 2011-2022 走看看