【小技巧】如何使上线前初始化数据的SQL脚本可测试?
背景
有时候,我们在上线某些特性时,可能需要提前初始化数据,才能使功能正常运作。
初始化数据,常用的有以下两种途径:
- 单纯为了这个初始化数据,开发一个Excel文件导入功能
- 开发人员维护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脚本可测试?的更多相关文章
- SQL Server 2008导出数据为SQL脚本的操作步骤
以前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...
- SQL Server里面如何导出包含数据的SQL脚本
通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没 ...
- 使用Sqlserver 2012 导出表数据为SQL脚本
目录 前言 具体步骤 前言 很多时候,我们需要把数控库中的表的数据导出成SQL脚本的情形.然后,在别的库执行的情况. 以下,总结使用Sqlserver 2012数据库中表数据导出成SQL脚本的步骤. ...
- 读取excel数据生成sql脚本
package com.interact.util; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.b ...
- java小技巧:如何分批次导入大量数据
//List 需要导入的数据int count = 1000;//每批次导入的数目int Lastindex = count;List<List<T>> shareList = ...
- iOS小技巧 - 如何使UIView可以绑定点击事件
让我们这次直接进入正题,有时候我们想做以下这种界面: 目前我就想到三种方案: 做一个tableview,然后组织cell的界面如上图所示 做一个button子类,使得button的界面能如上图所示 做 ...
- DB2中查询前十数据的sql
select * from A fetch first 10 rows only
- docker mysql初始化多个sql脚本
一.概述 现有一台服务器,需要部署mysql.其中mysql容器,需要在第一次启动时,执行多个sql文件. 文件名 说明 执行顺序 init.sql 创建数据库以及用户 1 users.sql 用户表 ...
- 路由器数据统计SQL脚本
一.路由器部分 //[饼图]统计路由器在线.离线数量 SELECT COUNT(*) AS total, MINUTE)) ELSE NULL END) AS livecount, MINUTE)) ...
- MySQL查询本周、上周、本月、上个月份数据的sql脚本
2018-11-13 查询今天的数据 select * from 表名 where to_days(时间字段名) = to_days(now()); 查询昨天的数据 SELECT * FROM 表名 ...
随机推荐
- manim边做边学--文字的创建与销毁
本篇开始介绍Manim中的动画模块,动画模块是整个框架的核心魅力所在. Manim不仅提供了可以直接实现各种各样动画效果的对象, 还提供了设置动画的时长.延迟时间以及运动速率等参数,可以据此发挥自己的 ...
- ae基于面要素生成柱状图
IFeatureLayer fl = axMapControl1.get_Layer(0) as IFeatureLayer; IGeoFeatureLayer pGeoFeatLyr = fl as ...
- Mysql的个人习惯
一定要有主键 一般使用的innodb引擎中会根据主健创建聚簇索引,这种方式会使得数据排列的更连续,减少随机IO 关于数据长度 考虑数据范围,够用的前提下,数据长度是越简单越好,数据类型是越小越好. 尽 ...
- orangepi zero3 使用dd命令进行SD卡系统备份与还原
1. 使用dd命令备份整个sd卡 首先使用 df -h命令查看sd卡挂载名,如下所示,sd卡挂载为 /dev/sdc meng@meng:~/桌面/code$ df -h 文件系统 大小 已用 可用 ...
- Modbus新手教程
REDISANT 提供互联网与物联网开发测试套件 # 互联网与中间件: Redis Assistant ZooKeeper Assistant Kafka Assistant RocketMQ Ass ...
- 这是我见过最通俗易懂的SVD(奇异值分解)算法介绍
线性代数是机器学习领域的基础,其中一个最重要的概念是奇异值分解(SVD),本文尽可能简洁的介绍SVD(奇异值分解)算法的基础理解,以及它在现实世界中的应用. SVD是最广泛使用的无监督学习算法之一,它 ...
- 在线标定新思路!SST-Calib:最新Camera-Lidar时空同步标定算法(ITSC 2022)
在线标定新思路!SST-Calib:最新Camera-Lidar时空同步标定算法(ITSC 2022) 论文链接: 链接:https://pan.baidu.com/s/1qsfml4THs26Y7b ...
- 把.netcore console 安装到Windows 系统服务。
用个工具:NSSM 下载:最新的那个pre版本 http://www.nssm.cc/download 测试.netcore 的一个控制台程序(Console),仅仅用来定时写入一些日志, 代码如下: ...
- IDEA神器插件-40款
IDEA 插件安装 步骤 IDEA里面,选择打开 File --> Settings --> Plugins 在Plugins里面, 可以搜索需要的插件 (下面的标题),然后安装 如下图: ...
- Kubernetes Pod状态和生命周期管理
Pod是kubernetes中你可以创建和部署的最小也是最简的单位.Pod代表着集群中运行的进程. Pod中封装着应用的容器(有的情况下是好几个容器),存储.独立的 ...