在数据库开发或测试过程中,客户频繁变更测试数据是常见场景。每次拿到新的 Excel 文件,如果依靠手工修改 SQL,不仅耗时,而且容易出错。本文介绍一种基于脚本的自动化方案,只需将 Excel 文件放入指定目录并运行一条命令,即可自动生成对应的 DDL 和 DML 脚本。
脚本来源与定位
该生成器脚本源自 cnblogs 上的一篇分享,位于项目的 scripts/generate_v2.py。需要说明的是,这个脚本并非开箱即用的通用工具,而是针对具体项目文件结构、借助 AI 生成的定制脚本。只要客户的文件结构没有大的变化,后续更换数据时可以直接复用,无需每次重新生成。
使用前必须了解的约定
为了让脚本正确解析数据,请遵守以下约定:
- 文件名作为表名:例如
user.xlsx对应的表名就是user。 - 第一行必须是字段名:脚本将此行作为列标识。
- 默认读取第一个工作表:如果 Excel 文件包含多个工作表,脚本只处理第一个。
- 第二行起全部作为数据:从第二行开始的所有行都视为待插入的数据。
reference/目录下所有.xlsx文件都会参与生成:无需逐个指定,放入即用。
分步操作流程
1. 准备 Excel 文件
将更新后的 .xlsx 文件放入项目的 reference/ 目录,确保文件符合上述约定,特别是第一行为字段名。
2. 运行生成器
确认已安装脚本所需依赖(如 Python 3 及对应的第三方库),然后在项目根目录执行:
bash python3 scripts/generate_v2.py
3. 检查生成结果
执行后,终端会输出生成的表数和总行数,格式为:
Generated <表数> tables and <总行数> rows
具体数值取决于 reference/ 中的文件内容。同时,脚本会覆盖生成 scripts/v2/ 下的以下文件:
01_ddl.sql— 表结构创建语句02_dml.sql— 数据插入语句03_verify.sql— 数据校验脚本run_all.sql— 包含上述所有步骤的综合脚本生成清单.md— 记录了每个文件的哈希、列数和行数
建议先查看终端输出,再打开 scripts/v2/生成清单.md,核对文件哈希、列数和行数是否符合预期,以便在执行前尽早发现数据或格式问题。
4. 执行生成的 SQL 脚本
确认生成无误后,在目标数据库中执行这些脚本。注意:生成的 V2 脚本在执行时会删除并重建同名表,属于破坏性操作,可能导致原有数据丢失。因此:
- 执行前务必确认目标数据库,并做好数据备份。
- 优先在测试环境验证,确认无误后再在生产环境执行。
- 必要时准备好回滚方案。
另外,旧版 scripts/*.sql 不会被修改,原有脚本保持原样。
小结
通过这个脚本,只需更换 reference/ 中的 Excel 文件并运行一条命令,即可完成从数据到 SQL 的自动化生成,显著减少手工操作带来的错误和时间成本。将重复性工作交给脚本,是提升效率的可行路径。
如果你在使用中遇到问题,或希望将脚本集成到更自动化的工作流中,可以进一步探索错误处理、日志记录等扩展方向。