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

供应商管理系统免费宁波seo网络推广选哪家

供应商管理系统免费,宁波seo网络推广选哪家,西安网站运营,哪些网站是百度新闻源前言 很粗糙啊,有很多可以优化的地方,而且也不安全,但是临时用还是OK的,我这个是公司里面的单机软件,不联网。 嗨!我是一名社交媒体增长黑客,很高兴能帮助您优化和丰富关于批量作业导出和导入…

前言

很粗糙啊,有很多可以优化的地方,而且也不安全,但是临时用还是OK的,我这个是公司里面的单机软件,不联网。

嗨!我是一名社交媒体增长黑客,很高兴能帮助您优化和丰富关于批量作业导出和导入的文章。这个主题相当技术性,但我会将其分解为易于理解的部分。让我们开始吧!

简介

在当今快节奏的数字世界中,高效地导出和导入批量作业对于企业至关重要。批量作业操作涉及处理大量数据,拥有流畅的流程可以节省时间和精力。在本文中,我们将探讨一种基于Java的解决方案,可以让您无缝地导出和导入批量作业。

导出批量作业

提供的代码片段演示了如何使用基于Java的解决方案导出批量作业。以下是代码的详细说明:

  1. exportBatchJobs 方法负责导出批量作业。它使用 StringBuilder 构建每个表的 SQL 语句。

  2. getTableNames 方法使用 SHOW TABLES SQL 查询检索所有表名。

  3. 对于每个表,都会调用 downloadTable 方法。它查询表数据并为每一行生成 SQL 插入语句。

  4. 生成的 SQL 语句会追加到 sqlBuilder 中。

  5. 最后,sqlBuilder 的内容会写入 HTTP 响应,允许用户下载 SQL 文件。

为了优化这段代码,您可以考虑以下改进:

  • 使用 ExecutorServiceFuture 类实现多线程,以并行化导出过程。这可以显著提高性能,特别是在处理大量表时。

  • 探索优化 SQL 生成过程的方法。例如,可以使用批量插入而不是单个插入语句来提高效率。

/*** 导出批次作业** @author <a href = "mailto:zysicyj@163.com" > 公众号:【程序员朱永胜】 个人博客:【blog.zysicyj.to】 </a >* @since 2023/8/10*/@GetMapping("/exportBatchJobs")@Transactional(rollbackFor = Exception.class)public void exportBatchJobs(HttpServletResponse response) {try {StringBuilder sqlBuilder = new StringBuilder();ExecutorService executorService = Executors.newFixedThreadPool(getTableNames().size());List<Future<?>> futures = new ArrayList<>();for (String tableName : getTableNames()) {Future<?> future = executorService.submit(() -> {try {downloadTable(tableName, sqlBuilder);} catch (IOException e) {throw new RuntimeException(e);}});futures.add(future);}// Wait for all threads to finishfor (Future<?> future : futures) {future.get();}// Set response headers for file downloadresponse.setContentType("application/octet-stream");response.setCharacterEncoding("UTF-8");response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + format(DateUtil.now(), "YYYY-MM-dd HH:mm:ss") + ".sql");response.getWriter().write(sqlBuilder.toString());executorService.shutdown();} catch (Exception e) {e.printStackTrace();}}
    /*** 获取所有表名** @return java.util.List<java.lang.String>** @author <a href = "mailto:zysicyj@163.com" > 公众号:【程序员朱永胜】 个人博客:【blog.zysicyj.to】  </a >* @since 2023/8/10*/public List<String> getTableNames() {return jdbcTemplate.queryForList("SHOW TABLES", String.class);}
/*** 导出指定表SQL** @param tableName*         表明* @param sqlBuilder*         拼接sql** @author <a href = "mailto:zysicyj@163.com" > 公众号:【程序员朱永胜】 个人博客:【blog.zysicyj.to】 </a >* @since 2023/8/10*/public void downloadTable(String tableName, StringBuilder sqlBuilder) throws IOException {// 查询表数据String sql = "SELECT * FROM ??";List<Map<String, Object>> tableData = jdbcTemplate.queryForList(sql, tableName);// 拼接SQL插入语句for (Map<String, Object> row : tableData) {StringBuilder valuesBuilder = new StringBuilder();StringBuilder columnsBuilder = new StringBuilder();for (Map.Entry<String, Object> entry : row.entrySet()) {columnsBuilder.append(entry.getKey()).append(", ");if (entry.getValue() instanceof byte[]) {byte[] binaryData = (byte[]) entry.getValue();String hexString = bytesToHexString(binaryData);valuesBuilder.append("0x").append(hexString).append(", ");} else {valuesBuilder.append("'").append(entry.getValue()).append("', ");}}String columns = columnsBuilder.substring(0, columnsBuilder.length() - 2);String values = valuesBuilder.substring(0, valuesBuilder.length() - 2);sqlBuilder.append("INSERT INTO ").append(tableName).append(" (").append(columns).append(") VALUES (").append(values).append(");\n");}}

导出来的就是这种格式的文件

image-20230810221022867

导入批量作业

提供的代码片段演示了如何导入包含批量作业数据的 SQL 文件。以下是代码的详细说明:

  1. executeSqlFile 方法处理导入过程。它接受一个 SQL 文件作为 MultipartFile 并读取其内容。

  2. 使用分号(;)分隔符将 SQL 文件内容拆分为单个语句。

  3. 使用参数化查询执行每个语句,确保安全性并防止 SQL 注入攻击。

  4. 如果 SQL 文件成功执行,则方法返回成功消息。否则,它会记录导入过程中出现的任何错误。

为了优化这段代码,您可以考虑以下改进:

  • 实现错误处理,并提供更详细的错误消息,以帮助用户排除导入过程中可能出现的任何问题。

  • 考虑在执行语句之前验证 SQL 文件内容。这可以帮助防止由格式错误或不兼容的 SQL 语句引起的潜在错误。

/*** 导入SQL** @return com.nari.common.core.domain.AjaxResult** @author <a href = "mailto:zysicyj@163.com" > 公众号:【程序员朱永胜】 个人博客:【blog.zysicyj.to】 </a >* @since 2023/8/10*/@PostMapping("/importBatchJobs")@ResponseBodypublic AjaxResult executeSqlFile(@RequestParam("filePath") MultipartFile file) {List<String> results = new ArrayList<>();try {// Read the SQL file contentString sql = new String(file.getBytes());// Split the SQL file content into individual statementsString[] statements = sql.split(";");// Execute each statement using parameterized queriesfor (String statement : statements) {// Skip empty statementsif (statement.trim().isEmpty()) {continue;}// Execute the statement using parameterized queriesjdbcTemplate.update(statement);}return AjaxResult.success("SQL file executed successfully");} catch (IOException e) {results.add(e.getMessage());}log.info("导入失败的SQL数量:{},{}", results.size(), results);return success();}

总结

总之,本文探讨了一种基于Java的解决方案,用于导出和导入批量作业。导出过程检索表数据并生成 SQL 插入语句,允许用户下载 SQL 文件。导入过程读取 SQL 文件,将其拆分为单个语句,并使用参数化查询执行这些语句。通过优化代码并实现错误处理,您可以提高批量作业导出和导入功能的效率和可靠性。

希望这篇优化和丰富的文章能帮助您为读者提供有价值的见解。如果您有任何进一步的问题或需要额外的帮助,请随时提问!

http://www.qdjiajiao.com/news/2841.html

相关文章:

  • 网站开发完成如何上线微信群免费推广平台
  • 黑帽seo怎么做网站排名网推拉新app推广平台
  • 洞口做网站推荐宁波seo外包推广公司
  • 常德网站建设西安seo网站推广优化
  • 聊城市住房和城乡建设委员会网站seo整站优化服务
  • 申请一个域名后怎么做网站本地推广平台有哪些
  • 如何进入网站管理员界面网络推广业务
  • 国外广告联盟的真实收入优化关键词排名优化公司
  • 网站的301重定向怎么做每日英语新闻
  • 重庆十大建筑公司排名班级优化大师使用指南
  • 网络游戏代练seo推广思路
  • 灯饰如何做网站推广seo优化专员编辑
  • 沛县网站建设企业网站建设的技术支持
  • 做纺织的都用什么网站友情链接平台网站
  • 广州专业做外贸网站网站怎么创建
  • 广州住房公积金建设银行预约网站刷推广链接的网站
  • 通化网站开发加速游戏流畅的软件
  • 建设一个功能简单的网站百度高搜
  • wordpress著名网站web网页制作成品
  • 基于wed的网站开发推广普通话手抄报简单漂亮
  • 做宣传可以在哪些网站上发布西安的网络优化公司
  • 高埗镇网站建设公司百度首页纯净版
  • wordpress加cdn南阳seo优化
  • 网站建设外包公司推广软件app
  • 网站文章快速被收录江苏建站
  • 网站开发 学习步骤长尾关键词有哪些
  • 网站建设需要考哪些证搜索引擎成功案例分析
  • 广州英铭网站建设百度24小时人工电话
  • 做网站需要有公司吗怀化网站seo
  • 如何做学校网站网络推广赚钱项目