mysql 备份html数据_MySQL自动化生成HTML页面(导出数据)极限SQL编程-sql文件怎么打开...

95e9d48af5ba69ed5aa2ff796efc6aab.png

今日客户要求表内的数据依据某种分组生成HTML页面进行展示,一般处理这种需求直接上编程工具就好了,从数据库里读取数据,根据规则生成字符串,最后将字符串写出到文件。由于需求比较急,作为数据库编程系列文章,如果能用SQL实现首选还是SQL,这样处理既直接又快速,不过针对SQL要真的有耐心和信心写完,调试更是崩溃。由于要写出文件到硬盘,最后还是选择MySQL作为数据库工具,Navicat作为开发工具。

有两张表计划表、市县表,二者依靠市县编码(sxbm)进行等值连接,计划表内含有各个学校投放在各个市县的专业代号(zydh),专业名称(zymc)、招生备注(bz)、学制(xz)、要求的学历(xl)、计划数(jh)等字段组成的计划信息,院校编码(yxbm)为学校的两位数编码,院校代号(yxdh)为院校编码(yxbm)+市县编码(sxbm)组成的四位数编码,院校代号其实可以区分出学校在哪个市县的投档的专业计划。要求以学校为单位创建HTML页面,页面首先要以市县作为表格分割,然后根据专业代号排序。具体实现过程如下:

创建计划表:CREATE TABLE `zzjh2019v` (

`YXDH` varchar(9) COMMENT '学校代号',

`YXMC` varchar(54) COMMENT '学校名称',

`ZYDH` varchar(2) COMMENT '专业代号',

`ZYMC` varchar(28) COMMENT '专业名称',

`XZ` varchar(3) COMMENT '学制',

`XL` varchar(4) COMMENT '学历',

`JH` varchar(6) COMMENT '招生计划数',

`BZ` varchar(200) COMMENT '备注',

`yxbm` char(2) COMMENT '学校编码',

`sxbm` char(2) COMMENT '市县编码'

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;

创建市县编码表:CREATE TABLE `sx` (

`sxbm` char(2) COMMENT '市县编码',

`sxmc` varchar(20) COMMENT '市县名称'

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;

纠结了很久这个东西怎么写,最后采取游标、拼接字符串、字符串聚合,动态SQL,写文件等一些列操作完成需求,创建的存储过程如下:CREATE DEFINER=`root`@`localhost` PROCEDURE `splitjh`()

BEGIN

declare done INT DEFAULT 0;

declare pyxbm char(2);

declare psxmc varchar(10);

declare pyxmc varchar(50);

declare pjhall int;

declare pjhrows TEXT;

declare yxjh cursor

for

select yxbm,yxmc,sum(jh) jhall from zzjh2019v a,sx b where a.sxbm=b.sxbm group by yxbm,yxmc order by yxbm;

declare CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

open yxjh;

fetch yxjh into pyxbm,pyxmc,pjhall;

while done !=1 do

select group_concat(jhrow separator '') into pjhrows from

(select concat('

',yxdh,'',yxmc,'在 ',b.sxmc,' 招生计划如下',sum(jh),'',group_concat('',zydh,'',zymc,'(',bz,')',jh,'',xz,'',xl,'' order by zydh separator '')) jhrow

from zzjh2019v a,sx b where yxbm=pyxbm and a.sxbm=b.sxbm group by yxdh order by yxdh,zydh) jhs;

set @pfilename = concat('''d:/32/1/1/jh11',pyxbm,'.html''');

set @sql =concat('select concat(''

3+2计划

代号专业及名称备注人数学制学历

prepare execsql from @sql;

execute execsql;

DEALLOCATE PREPARE execsql;

fetch yxjh into pyxbm,pyxmc,pjhall;

end while;

close yxjh;

END;

首先看效果,执行过程call splitjh();

在磁盘形成的HTML文件效果如下图(数据有一定的敏感性,进行了遮挡处理):

44f9d246416484404a754b513fd94238.png

文件展示页面

生成的文件列表如下图:

1061aa146b9179736c948bd612d44015.png

生成的文件列表

这里一共有87所学校,所以生成了87的文件,添加CSS样式文件,让表格呈现如前图所示。

技术点

1)MySQL的游标,以及循环读取游标的方法,涉及的语句如下:declare yxjh cursor

for

select yxbm,yxmc,sum(jh) jhall from zzjh2019v a,sx b where a.sxbm=b.sxbm group by yxbm,yxmc order by yxbm;#游标定义

declare CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;#游标循环条件,注意此句一定要定义在游标之后,才起作用

open yxjh;#打开游标

fetch yxjh into pyxbm,pyxmc,pjhall;#将游标行内容赋值给变量。

2)执行动态SQL,由于MySQL into outfile 后接的文件名不能为变量,所以必须使用动态SQL的方法,涉及的语句如下:prepare execsql from @sql;#从一个变量准备一个动态sql,注意execsql不用提前定义

execute execsql;#执行准备好的语句

DEALLOCATE PREPARE execsql;#销毁语句

综上就是使用MySQL数据库,并借用MySQL写文件的方式将数据从数据库内按照需求导出文件,为何不用navicat导出呢?因为无法达到要求,又是聚合、又是格式,所以只能自己编写过程通过SQL语句拼接字符串的方式来实现。没有太多的技术难度,主要是想法和调试难度。后续在此基础上又开发了以市县为单位创建HTML文件,各招生学校作为分割的过程。本案例是实际需求催生出来的做法,在遇到这样的需求前你是先想到SQL还是先想到开发工具呢?从实际效果看使用SQL这种方式更加灵活。这样的SQL实现的字符串拼接是不是有点极限呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是数据光端机?数据光端机的作用有哪些?

数据光端机,电信非压缩光端机,就是将多个E1(一种中继线路的数据传输标准,通常速率为2.048Mbps,此标准为中国和欧洲采用)信号变成光信号并传输的设备。那么,什么是数据光端机?数据光端…

spring创建web项目_使用Spring WS创建合同优先的Web服务

spring创建web项目1引言 本文介绍了如何使用来实现和测试SOAP Web服务 Spring Web Services项目 。 本示例将JAXB2用于(取消)编组。 为了开发服务,我将使用合同优先的方法,该方法首先定义服务合同,然后基于此合同实施…

什么是网络光端机?网络光端机工作原理及功能介绍!

网络光端机,就是光信号传输的终端设备。由于目前技术的提高,光纤价格的降低使它在各个领域得到很好的应用。在远程光纤传输中,光缆对信号的传输影响很小,光纤传输系统的传输质量主要取决于光端机的质量,因为光端机负责…

以太网交换机的用途有哪些?

交换机的主要功能包括物理编址、网络拓扑结构、错误校验、帧序列以及流控。交换机还具备了一些新的功能,如对VLAN(虚拟局域网)的支持、对链路汇聚的支持,甚至有的还具有防火墙的功能。接下来就由飞畅科技的小编带大家详细了解下交…

交换机主要分为哪几类?

交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。 从广义上来看&…

java编程彩球滑梯作弊_课内资源 - 基于C++的学生成绩管理系统

1 系统分析1.1 学生成绩管理系统介绍班主任管家软件以学生信息、课程信息为基础,以品行表现成绩(辅导员、班主任、班级评议成绩)和业务课程成绩为评价依据,每学期评定一次奖学金,奖学金作为学生评定各种荣誉的主要依据,并将各种评…

交换机工作原理介绍

交换机是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。交换机工作于OSI参考模型的第二层,即数据链路层。交换机拥有一条高带宽的背部总线和内部交换矩阵&am…

bitmap的java原理_布隆算法的原理及JAVA实现

Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合&#xff…

什么是语音复用设备?

语音复用设备是一种小容量、多业务的复用及传输设备,它能为用户提供综合的通信功能,满足用户对电话、数据以及计算机网络连接的实际需要。它的多种传输方式使其能灵活的应用在各种通信网络中:可以作为光电一体化综合通信业务接入设备&#xf…

截断整型提升算数转换

文章目录 🚀前言🚀截断🚀整型提升✈️整型提升是怎样的 🚀算术转换 🚀前言 大家好啊!这里阿辉补一下前面操作符遗漏的地方——截断、整型提升和算数转换 看这一篇要先会前面阿辉讲的数据的存储否则可能看不…

java如何通过grpc连接etcd_grpc通过 etcd 实现服务发现与注册-源码分析

介绍下面介绍 jupiter-0.2.7 版本中 grpc 通过 etcd 实现服务发现与注册。服务发现与注册的实现解析服务注册服务注册的流程图:etcd的服务注册代码模块在 jupiter/pkg/registry/etcdv3 中。下面让我们来看看实际的代码// Registry register/unregister service// re…

spring jms 事务_Spring JMS:处理事务中的消息

spring jms 事务1.引言 这篇文章将向您展示使用JMS异步接收消息期间使用者执行过程中的错误如何导致消息丢失。 然后,我将解释如何使用本地事务解决此问题。 您还将看到这种解决方案在某些情况下可能导致消息重复(例如,当它将消息保存到数据…

使用AWS Lambda,S3和AWS CloudFront进行动态内容缓存

快速提供内容对于任何网站或应用程序具有更好的客户体验至关重要。 如果您将网站或应用程序托管在AWS Cloud中,那么无论从何处访问应用程序,都可以以较低的延迟快速提供内容。 AWS提供了CloudFront服务,用于将内容缓存在每个用户地理位置本地…

数据光端机设备性能指标介绍

作为安防监控工程,设备的可靠性应该是第一考虑要素。而数据光端机设备的可靠性是设备厂商在产品设计时就必需考虑的,但是,有些厂商可能会因为某些原因而不愿做或不知道怎么做这方面的工作,在这里着重从工程的角度简单地讨论以下问…

光电转换器有什么作用?光纤收发器如何保养?

光电转换器可以使原来的快速以太网平滑升级,并能充分保护用户原来的网络资源,它也可以称为光纤收发器。光电转换器可以实现交换机和计算机之间的互联,也可以作为传输中继,还可以进行单多模转换。光纤收发器在应用过程中&#xff0…

html中输出PHP的下拉列表,html中关于下拉列表select的图文代码详解

HTML中的下拉列表:Html代码VolvoSaabOpelAudi其中select是显示一个下拉列表(drop down list)出来,option是下拉列表中的项目(item),而option的文本内容(text content)是下拉列表项目中显示到页面上的值,value是真正需要提交到服务…

光纤收发器tx和rx的区别?

光纤收发器,是一种将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元,在很多地方也被称之为光电转换器(Fiber Converter)。产品一般应用在以太网电缆无法覆盖、必须使用光纤来延长传输距离的实际网络环境中…

光纤收发器元件级和整机测试内容介绍

对光纤收发器的测试可分为元件级和整机测试,元件级测试主要包括对光纤收发器内部关键器件在电工作的电性能测试。整机测试主要指将光纤收发器接入到以太局域网中,测试整机的功能、性能和特性。那么,具体要怎样测试光纤收发器才是一次完整的测…

如何判断光纤收发器是否有问题?

一般情况下,光纤收发器或光模块的发光功率如下:多模在10db--18db之间;单模20公里在-8db--15db之间;而单模60公里则在-5db--12db之间。但如是光纤收发器的发光功率出现在-30db--45db之间,那么,很有可能这个光…

activemq 实例_在一台计算机上运行多个ActiveMQ实例

activemq 实例几周前,我再次通过Mule ESB解决方案将Apache ActiveMQ用作JMS提供程序。 由于使用ActiveMQ已经有几年了,所以我认为最好检查一些(新)功能,例如故障转移传输和其他群集功能 。 为了能够测试这些最后的东西…