mysql怎么读取视频 mysql读取文件( 二 )


do aa=$aa"insert into ytt.tt_image3(image_file) values
('/var/lib/mysql-files/$i.jpg');";
done;aa=$aa'commit;';mysql -S /var/run/mysqld/mysqld.sock -e "`echo $aa`";
检查下三张表记录数
mysql select 'tt_image1' as name ,count(*) from tt_image1 union allselect 'tt_image2',count(*) from tt_image2 union all select 'tt_image3', count(*) from tt_image3;+-----------+----------+| name| count(*) |+-----------+----------+| tt_image1 |100 || tt_image2 |100 || tt_image3 |100 |+-----------+----------+3 rows in set (0.00 sec)
看下文件大小 , 可以看到实际大小排名,LONGTEXT 字段存储的最大,LONGBLOB 字段缩小到一半,最小的是存储图片路径的表 tt_image3 。所以这里从存储空间来看,存放路径最占优势 。
root@ytt:/var/lib/mysql/ytt# ls -silhS tt_image*274603 1.1G -rw-r----- 1 mysql mysql 1.1G Jul 11 07:27 tt_image2.ibd274602 545M -rw-r----- 1 mysql mysql 544M Jul 11 07:26 tt_image1.ibd27460580K -rw-r----- 1 mysql mysql 112K Jul 11 07:27 tt_image3.ibd
那么怎么把图片取出来呢?
tt_image3 肯定是最容易的
mysql select * from tt_image3;+----+----------------------------+| id | image_file|+----+----------------------------+|1 | /var/lib/mysql-files/1.jpg |+----+----------------------------+...100 rows in set (0.00 sec)
tt_image1 直接导出来二进制文件即可,下面我写了个存储过程,导出所有图片 。
mysql DELIMITER $$mysql USE `ytt`$$mysql DROP PROCEDURE IF EXISTS `sp_get_image`$$mysql CREATE DEFINER=`ytt`@`localhost` PROCEDURE `sp_get_image`()mysql BEGINDECLARE i,cnt INT DEFAULT 0;SELECT COUNT(*) FROM tt_image1 WHERE 1 INTO cnt;WHILE icnt DOSET @stmt = CONCAT('select image_file from tt_image1limit ',i,',1 into dumpfile ''/var/lib/mysql-files/image',i,'.jpg''');PREPARE s1 FROM @stmt;EXECUTE s1;DROP PREPARE s1;SET i = i + 1;END WHILE;END$$mysql DELIMITER ;mysql call sp_get_image;
tt_image2 类似,把 select 语句里 image_file 变为 unhex(image_file) 即可 。
总结
这里我举了个用 MySQL 来存放图片的例子,总的来说有以下三点:
占用磁盘空间大(这样会带来各种各样的功能与性能问题 , 比如备份,写入 , 读取操作等)
使用不易
还是推荐用文件路径来代替实际的文件内容存放
php+mysql php怎么读取mysql数据库的数据!其实这里跟你讲了也讲不全 。
推荐你看看韩顺平的php零基础教程
这段视频已经公开在网上,百度一下就有了,你把mysql的内容过一边就会了 。
如何用SQL数据库存放视频用iamge类型,写入的时间用流写入,读出的时间同样需要流转换 。
sql数据库存放视频是可以的,但是不推荐这么做 , 一般要把视频文件以二进制流的方式写入数据库字段,这样会消耗性能,读取也不方便 。
但是现实中一般是推荐存放视频文件路径 , 比如把这种文件(图片、音频、视频)保存到一个专门的路径下,而数据库只保存这个文件的完整路径即可 。
调用时从数据库中取路径,然后把相关的文件显示出来即可 。
扩展资料:
SQL Server数据库包括Microsoft SQL Server以及Sybase SQL Server两个子数据库,该数据库能否正常运行直接关系着整个计算机系统的运行安全 。
SQL包括了所有对数据库的操作,主要是由4个部分组成:
1、数据定义:又称为“DDL语言”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分 。
2、数据操纵:又称为“DML语言”,包括插入、删除和更新三种操作 。
3、数据查询:又称为“DQL语言”,包括数据查询操作 。
4、数据控制:又称为“DCL语言”,对用户访问数据的控制有基本表和视图的授权及回收 。
5、事务控制:又称为“TCL语言” , 包括事务的提交与回滚 。