最近项目中同时用到了存储大文本的两种情况,做一小结。
1.将文件存储到 mysql 中,存储为二进制数据。
mysql 的表字段类型选择了LONGBLOB。在java中生成的实体类对应的字段类型为 byte[ ];
CREATE TABLE `tmp_jmeter_case` (
`ID` int(16) NOT NULL AUTO_INCREMENT COMMENT '主键',
`JMETER_CASE_NAME` varchar(100) DEFAULT NULL COMMENT 'jmeter用例名称',
`FILE_NAME` varchar(100) DEFAULT NULL COMMENT '原文件名',
`SYS_FILE_NAME` varchar(100) DEFAULT NULL COMMENT '系统文件名',
`UPLOAD_TIME` timestamp NULL DEFAULT NULL COMMENT '上传时间',
`UPLOAD_BY` varchar(10) DEFAULT NULL COMMENT '上传人',
`UPDATE_TIME` timestamp NULL DEFAULT NULL COMMENT '修改时间',
`UPDATE_BY` varchar(10) DEFAULT NULL COMMENT '修改人',
`FILE_DATA` longblob COMMENT '用例数据',
`YN` char(1) DEFAULT '1' COMMENT '是否删除(1-未删除,0-已删除)',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='jmeter测试用例表';
public class TmpJmeterCasePo implements Serializable {
private Integer id;
private String jmeterCaseName;
private Date uploadTime;
private String uploadBy;
private byte[] fileData; //longblob 对应的java字段类型为 byte[]
选择这种方式落库的特点在于,想要查看存下来的数据需要先解析 二进制数据,不能直观看到文本内容。
2.将文件存储到 mysql 中,存储为文本数据。
CREATE TABLE `tmp_jmeter_exe_log` (
`ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`JMETER_CASE_ID` int(16) DEFAULT NULL COMMENT 'jmeter测试用例ID',
`EXE_BY` varchar(10) DEFAULT NULL COMMENT '操作人',
`EXE_TIME` timestamp NULL DEFAULT NULL COMMENT '操作时间',
`IS_SUCCESS` char(1) DEFAULT NULL COMMENT '是否成功(0-失败,1-成功)',
`EXE_TYPE` char(1) DEFAULT NULL COMMENT '执行方式(单次执行-1,批量执行-2,定时执行-3)',
`REQUEST_FILE_NAME` varchar(100) DEFAULT NULL COMMENT 'jmeter配置文件名',
`RESULT_FILE_NAME` varchar(100) DEFAULT NULL COMMENT '执行结果文件名',
`RESULT_DATA` longtext COMMENT '执行结果数据',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8 COMMENT='jmeter执行日志表';
public class TmpJmeterExeLogPo implements Serializable {
private Integer id;
private Integer jmeterCaseId;
private String resultData; //longtext 对应的java字段类型为String
选择这种方式落库的特点在于,查看文本内容不需要解析,读出来即可用,或者直接从数据库表就能查看;
总结
mysql数据库中有一种数据类型是longblob (lang binary large object),二进制大对象,是一个可以存储 二进制文件的容器。(例如html,xml等文件)
LongBlob的含义
他相对于Blob这个类型来说就是储存的数据更大
在计算机中,BLOB常常是数据库中用来存储 二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
根据Eric Raymond的说法, 处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。
但也有专家强调,这种处理 大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的 二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是 应用程序处理BLOB的典型例子。
原文链接:mysql 存储 longtext 与 longblob数据类型的区别_longtext和longblob_张漂亮’s Blog的博客-CSDN博客
原文链接:https://blog.csdn.net/kingdaqi/article/details/114405249