mysql 数据库大文本_Mysql数据库大文本数据处理
数据库大文本数据处理目标:把 mp3文件保存到数据库中!在my.ini中添加如下配置: max_allowed_packet=104857601 什么是大文本数据所谓大文本数据,就是大的字节数据,或大的字符数据。标准SQL中提供了如下类型来保存大文本数据类型:类型长度tinyblob28--1B(256B)blob216-1B(64K)mediumblob224-1B(16M)longblob23
数据库大文本数据处理
目标:把 mp3文件保存到数据库中!
在my.ini中添加如下配置: max_allowed_packet=10485760
1 什么是大文本数据
所谓大文本数据,就是大的字节数据,或大的字符数据。标准SQL中提供了如下类型来保存大文本数据类型:
类型
长度
tinyblob
28--1B(256B)
blob
216-1B(64K)
mediumblob
224-1B(16M)
longblob
232-1B(4G)
tinyclob
28--1B(256B)
clob
216-1B(64K)
mediumclob
224-1B(16M)
longclob
232-1B(4G)
但是,在mysql中没有提供tinyclob、clob、mediumclob、longclob四种类型,而是使用如下四种类型来处理大文本数据:
类型
长度
tinytext
28--1B(256B)
text
216-1B(64K)
mediumtext
224-1B(16M)
longtext
232-1B(4G)
首先我们需要创建一张表,表中要有一个mediumblob(16M)类型的字段。
CREATE TABLE tab_bin(
id INT PRIMARY KEY AUTO_INCREMENT,
filename VARCHAR(100),
data MEDIUMBLOB
);
还有一种方法,就是把要存储的数据包装成Blob类型,然后调用PreparedStatement的setBlob()方法来设置数据
代码如下:
package cn.itcast.demo4;
主要的包
import java.sql.Blob;
import javax.sql.rowset.serial.SerialBlob;
import org.apache.commons.io.IOUtils;
import cn.itcast.demo3.JdbcUtils;
/**
* 大文本数据
*/
public class Demo4 {
// 把mp3保存到数据库中。
@Test
public void fun1() throws Exception {
/*
* 1. 得到Connection
* 2. 给出sql模板,创建pstmt
* 3. 设置sql模板中的参数
* 4. 调用pstmt的executeUpdate()执行
*/
Connection con = JdbcUtils.getConnection();
String sql = "insert into tab_bin values(?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setInt(1, 1);
pstmt.setString(2, "流光飞舞.mp3");
/**
* 需要得到Blob
* 1. 我们有的是文件,目标是Blob
* 2. 先把文件变成byte[]
* 3. 再使用byte[]创建Blob
*/
// 把文件转换成byte[]
byte[] bytes = IOUtils.toByteArray(new FileInputStream("F:/流光飞舞.mp3"));
// 使用byte[]创建Blob
Blob blob = new SerialBlob(bytes);
// 设置参数
pstmt.setBlob(3, blob);
pstmt.executeUpdate();
}
/**
* 从数据库读取mp3
*/
@Test
public void fun2() throws Exception {
/*
* 1. 创建Connection
*/
Connection con = JdbcUtils.getConnection();
/*
* 2. 给出select语句模板,创建pstmt
*/
String sql = "select * from tab_bin";
PreparedStatement pstmt = con.prepareStatement(sql);
/*
* 3. pstmt执行查询,得到ResultSet
*/
ResultSet rs = pstmt.executeQuery();
/*
* 4. 获取rs中名为data的列数据
*/
if(rs.next()) {
Blob blob = rs.getBlob("data");
/*
* 把Blob变成硬盘上的文件!
*/
/*
* 1. 通过Blob得到输入流对象
* 2. 自己创建输出流对象
* 3. 把输入流的数据写入到输出流中
*/
InputStream in = blob.getBinaryStream();
OutputStream out = new FileOutputStream("c:/lgfw.mp3");
IOUtils.copy(in, out);
}
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)