使用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

posted @ 2018-06-15 14:10  Coosee  阅读(892)  评论(0编辑  收藏  举报