背景

有时候,我们在上线某些特性时,可能需要提前初始化数据,才能使功能正常运作。

初始化数据,常用的有以下两种途径:

  1. 单纯为了这个初始化数据,开发一个Excel文件导入功能
  2. 开发人员维护SQL语句初始化数据

这两种途径都有优缺点:

第1种途径,使用方便,可重复导入不同的数据,但是开发成本高

第2种途径,开发人员维护SQL语句,成本低,但只能针对一批次的数据,第二次面对不同的数据无法复用,且SQL语句不经过测试人员验证,容易发生问题;

最近,我们在遇到这个问题时,有位小伙伴提出:我们可以用Excel制作SQL脚本啊。

用Excel制作SQL脚本

假设,我们需要初始化“员工所拥有的角色”的数据,这数据主要有两列,分别是“员工号”和“角色编码”。

那么,我们可以制作下图这样的Excel表格:

“员工号”、“角色”两列为业务数据,分别表示“员工号”和“角色编码”;

“SUB_SQL_1”、“SUB_SQL_2”、“SUB_SQL_3”分别是用于拼接的子SQL;

“SQL”是结果列,它用CONCAT函数拼接前面几列的值形成最终的SQL

比如,第2行的CONCAT函数表达式为:=CONCAT(C2,E2,A2,E2,D2,E2,B2,E2,F2)

提测的时候,我们将制作好的Excel文件提测,测试人员验证是否能通过此文件生成符合预期的数据。

生产环境初始化数据时,我们使用这个经过测试的Excel文件初始化数据。

【小技巧】如何使上线前初始化数据的SQL脚本可测试?的更多相关文章

  1. SQL Server 2008导出数据为SQL脚本的操作步骤

    以前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...

  2. SQL Server里面如何导出包含数据的SQL脚本

    通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没 ...

  3. 使用Sqlserver 2012 导出表数据为SQL脚本

    目录 前言 具体步骤 前言 很多时候,我们需要把数控库中的表的数据导出成SQL脚本的情形.然后,在别的库执行的情况. 以下,总结使用Sqlserver 2012数据库中表数据导出成SQL脚本的步骤. ...

  4. 读取excel数据生成sql脚本

    package com.interact.util; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.b ...

  5. java小技巧:如何分批次导入大量数据

    //List 需要导入的数据int count = 1000;//每批次导入的数目int Lastindex = count;List<List<T>> shareList = ...

  6. iOS小技巧 - 如何使UIView可以绑定点击事件

    让我们这次直接进入正题,有时候我们想做以下这种界面: 目前我就想到三种方案: 做一个tableview,然后组织cell的界面如上图所示 做一个button子类,使得button的界面能如上图所示 做 ...

  7. DB2中查询前十数据的sql

    select * from A fetch first 10 rows only

  8. docker mysql初始化多个sql脚本

    一.概述 现有一台服务器,需要部署mysql.其中mysql容器,需要在第一次启动时,执行多个sql文件. 文件名 说明 执行顺序 init.sql 创建数据库以及用户 1 users.sql 用户表 ...

  9. 路由器数据统计SQL脚本

    一.路由器部分 //[饼图]统计路由器在线.离线数量 SELECT COUNT(*) AS total, MINUTE)) ELSE NULL END) AS livecount, MINUTE)) ...

  10. MySQL查询本周、上周、本月、上个月份数据的sql脚本

    2018-11-13 查询今天的数据 select * from 表名 where to_days(时间字段名) = to_days(now()); 查询昨天的数据 SELECT * FROM 表名 ...

随机推荐

  1. 通过NPOI读取 excel指定Sheet 到 DataTable

    public static DataTable ReadExcelToDataTable(string fileName, string sheetName = null, bool isFirstR ...

  2. Java并发 —— 线程并发(一)

    线程和进程 进程就是一个内存中运行的应用程序 线程是当前进程中的一个执行任务(控制单元),负责当前进程中程序的执行 区别与联系 根本区别:进程是操作系统资源分配的基本单位,线程是处理器任务调度和执行的 ...

  3. VLC 播放完毕后自动退出的问题

    1.打开设置 2.打开全部显示 3.取消自动退出

  4. Redis应用—1.在用户数据里的应用

    大纲 1.社区电商的业务闭环 2.Redis缓存架构的典型生产问题 3.用户数据在读多写少场景下的缓存设计 4.热门用户数据的缓存自动延期机制 5.缓存惊群与穿透问题的解决方案 6.缓存和数据库双写不 ...

  5. 特性Attribute的简单用法

    一.建立一个自定义的Attribute类 注:类名+Attribute,类需要继承Attribute /// <summary> /// 特性 /// </summary> p ...

  6. 【NAS】绿联NAS+alist+lsky+natfrp 实现图床服务

    alist 安装与配置 值得一提的就是,映射的data是配置相关的,让绿联直接默认路径就行,不需要手动设置 但是文件保存位置的映射的话,为了方便,可以单独映射到一个方便访问的文件夹,(但是要注意下权限 ...

  7. containerd 导入镜像

    containerd 导入镜像 containerd而非docker,需要离线导入镜像 解决原理https://segmentfault.com/a/1190000019534913ctr --nam ...

  8. archlinux 显卡驱动

    https://arch.icekylin.online/guide/rookie/graphic-driver.html archlinux 显卡驱动# 接天莲叶无穷碧,映日荷花别样红# 近年来,a ...

  9. 记住我 token保存到数据库

    这里使用jpa+mysql <dependency> <groupId>org.springframework.boot</groupId> <artifac ...

  10. jacoco代码覆盖率报告分析

    一.目的 对Jacoco代码覆盖率统计维度.报告字段说明.报告详细分析描述.并为精准测试.健壮性测试提供指导. 二.Jacoco代码覆盖率统计维度 Jacoco是从代码指令(Instructions, ...