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

背景

有时候,我们在上线某些特性时,可能需要提前初始化数据,才能使功能正常运作。
初始化数据,常用的有以下两种途径:

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

这两种途径都有优缺点:
第1种途径,使用方便,可重复导入不同的数据,但是开发成本高
第2种途径,开发人员维护SQL语句,成本低,但只能针对一批次的数据,第二次面对不同的数据无法复用,且SQL语句不经过测试人员验证,容易发生问题;

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

用Excel制作SQL脚本

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

那么,我们可以制作下图这样的Excel表格:
【小技巧】如何使上线前初始化数据的SQL脚本可测试?

“员工号”、“角色”两列为业务数据,分别表示“员工号”和“角色编码”;
“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文件初始化数据。