当前位置: 首页 > news >正文

外贸网站营销方案县级门户网站建设运营成本

外贸网站营销方案,县级门户网站建设运营成本,北京市朝阳区网站开发公司电话,网络科技公司门户网站最近客户有个需求#xff0c;希望在后台增加手动备份功能#xff0c;将数据导出下载保存。 当然#xff0c;此方法不适用于海量数据的备份#xff0c;这只适用于少量数据的sql备份。 这是我生成的sql文件#xff0c;以及sql文件里的insert语句#xff0c;已亲测#x…最近客户有个需求希望在后台增加手动备份功能将数据导出下载保存。 当然此方法不适用于海量数据的备份这只适用于少量数据的sql备份。 这是我生成的sql文件以及sql文件里的insert语句已亲测可以直接执行 项目是SSM框架接下来就展示我的实现代码 首先是接受字段的实体类 Data public class ColumnsDto {/*** 表结构的主要字段**/private String column_name;//该字段则是表字段的数据类型 暂时不需要private String data_type;} 然后是用的到两个主要的sql 1.此sql用于查询表的有效字段信息table_schema当前的数据库名 select idqueryColumnsByTableName resultTypecom.hle.monitor.entity.vo.ColumnsDtoSELECTcolumn_name,data_typeFROMinformation_schema.COLUMNSWHEREtable_name #{tableName}AND table_schema supervision_dataORDER BY ordinal_position/select2.再用sql查询表的所有数据(注意此处表名需要要用$而不是#号) select idfindBackupAll resultTypejava.util.Mapselect * from ${tableName}/select 此处我省略了相应的service和mapper文件内容直接展示最重要的controller代码 import com.hle.monitor.entity.Results; import com.hle.monitor.entity.vo.ColumnsDto; import com.hle.monitor.service.UserService; import com.hle.monitor.util.DateUtils; import com.hle.monitor.util.MinIoUtil; import com.hle.monitor.util.ParameterUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.http.entity.ContentType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource; import java.io.*; import java.lang.reflect.Field; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map;/*** author*/ CrossOrigin(origins *) RestController() RequestMapping(/backup) Api(tags 备份相关接口类) Scope(prototype) public class BackupController {Autowiredprivate UserService userService;ResourceMinIoUtil minIoUtil;//本地文件夹路径private static String backupFilePath ./sql/;ApiOperation(value 根据表名备份信息)GetMapping(/{tableName})public Results backupTable(PathVariable(tableName) String tableName) {//表有效字段信息ListColumnsDto columnsDtoList userService.queryColumnsByTableName(tableName);if(columnsDtoList.isEmpty()) return new Results(500, 该表无有效字段信息);//文件名--先在本地创建写入后再进行删除String fileName System.currentTimeMillis() - tableName .sql;try {//获取所有备份数据ListMapString, Object records userService.findBackupAll(tableName);String path backupFilePath fileName;//不存在文件夹则创建File directory new File(backupFilePath);directory.mkdirs();BufferedWriter writer new BufferedWriter(new FileWriter(path));for (Map record : records) {String insertStatement generateInsertStatement(tableName, record, columnsDtoList) ;;writer.write(insertStatement);writer.newLine();}writer.close();File file new File(path);InputStream inputStream new FileInputStream(file);MultipartFile multipartFile new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);minIoUtil.upload(multipartFile, ParameterUtil.bucketNameParam, fileName);//上传后 删除本地文件file.delete();System.out.println(Backup created successfully!);} catch (IOException e) {e.printStackTrace();return new Results(500, 操作失败);}return new Results(200, 操作成功, fileName);}//此方法需要以数据库取出来的字段信息为准--转换成sql的方法private String generateInsertStatement(String tableName, MapString, Object record, ListColumnsDto columnsDtoList) {StringBuilder builder new StringBuilder();builder.append(INSERT INTO ).append(tableName).append( ();//拼接列名columnsDtoList.forEach(columns - {builder.append(columns.getColumn_name()).append(, );});builder.setLength(builder.length() - 2);builder.append() VALUES ();//拼接值columnsDtoList.forEach(columns - {Object value record.get(columns.getColumn_name());if(value instanceof Date){Date date (Date) value;builder.append().append(DateUtils.parseDateToStr(date)).append(, );}else if(value instanceof String){builder.append().append(value).append(, );}else{builder.append(value).append(, );}});builder.setLength(builder.length() - 2);builder.append());return builder.toString();}//此方法用于直接取Object的字段信息做sql拼接--转换成sql的方法--已验证过private String generateInsertStatement(String tableName, Object record) {StringBuilder builder new StringBuilder();builder.append(INSERT INTO ).append(tableName).append( ();Arrays.stream(record.getClass().getDeclaredFields()).map(Field::getName).forEach(fieldName - builder.append(convertCamelCaseToSnakeCase(fieldName)).append(, ));builder.setLength(builder.length() - 2);builder.append() VALUES ();Arrays.stream(record.getClass().getDeclaredFields()).map(field - {field.setAccessible(true);try {return field.get(record);} catch (IllegalAccessException e) {e.printStackTrace();return null;}}).forEach(value - {if(value instanceof Date){//时间格式 转换为-YYYY_MM_DD_HH_MM_SSDate date (Date) value;builder.append().append(DateUtils.parseDateToStr(date)).append(, );}else if(value instanceof String){builder.append().append(value).append(, );}else{//int/double类型 不需要单引号builder.append(value).append(, );}});builder.setLength(builder.length() - 2);builder.append());return builder.toString();}//驼峰命令转换 userName-转换为-user_namepublic static String convertCamelCaseToSnakeCase(String input) {return input.replaceAll(([a-z])([A-Z]), $1_$2).toLowerCase();}}在controller中提供了两种方法可以参考一下然后直接调用接口就行 因为项目需要我是写入文件后再上传至minio文件服务器所以我要查看还需要去minio服务器查看下载或者调用现有的下载接口下载 这样就完成了根据sql文件数据备份
http://www.zqtcl.cn/news/99062/

相关文章:

  • 做淘推广的网站如何制作表白链接
  • 外贸网站代码中国建设银行招聘网站甘肃分行
  • 免费ai设计logo网站西安网站开发外包公司有
  • 2017优秀网站设计欣赏如何做建议的网站
  • 获取网站访问qq怎么做链接
  • 最简单的网站建设中英文自助网站建设
  • vps 做网站品牌网站建设可信大蝌蚪
  • 怎样在百度建网站怎么建设课题网站
  • 广西网站设计欣赏企业网站建设的管理制度
  • 网站建设与管理提纲免费编程教学视频
  • 做效果图的网站有哪些推广网站详细教程
  • 2.0网站线上建设什么意思WordPress怎么设置分类
  • 湖南众诚建设 官方网站开发者模式是干什么的
  • o2o平台都有哪些网站公司莱芜网站优化方案
  • 个人或主题网站建设 实验体会网站开发可退税
  • 龙岗同乐社区做网站昆明发布最新通告
  • 能进外国网站看视频的浏览器wordpress 信息流
  • 怎样做自己介绍网站昆明网红打卡地有哪些地方
  • 一个外国人做汉字网站广州近期流行的传染病
  • 做pc端网站新闻pdf 网站建设
  • 盱眙网站建设棋牌软件定制开发
  • struts2 做的网站南京做网站优化
  • 网站设计的安全尺寸wordpress qqoq主题
  • 网站建设500错误代码网站文章超链接怎么做
  • 网站建设尺寸凡科建站弊端
  • 企业网站建设模板多少钱在哪里建网站免费
  • 盐城网站建设咨询优秀vi设计
  • 网站里面内外链接如何做北京pk10网站建设
  • 网站布局策划的流程百度知道入口
  • 个人网站设计毕业设计论文上海百度seo优化