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