1.需求简介
最近开发人员需要进行一批数据进行生产上SQL语句耗时过长问题的验证与优化。所以在性能测试库中批量建造数据,由于交易本身业务逻辑过于复杂以及需要各种授权,最后决定采用插表的方式完成。
2.所用工具
DbVisualizer 10.0.14(已破解)(并不需要本地存在DB2客户端,DbVisualizer本身通过JDBC驱动,所以本地要有Java环境,最好是Java1.8)
3.详细过程
本身并不复杂,但是现在基本上已MySQL以及Oracle为主,所以还是踩了几个坑。
(1)由于不是在DB2客户端命令行运行脚本的方式运行,在DbVisualizer中运行需要对存储过程进行定义,否则会报 CODE -104错误。
(2)由于造数的多张表主键大部分为流水号或者日期等(例:20180905204132),所以在存储过程中定义循环 变量的时候,会报错,应该是支撑不了这么大长度的变量定义。
在网上有解决办法,但是是对本地DB2环境变量进行配置,故本次造数过程采用 变量拼接的方式进行数据库主键的插入。
存储过程:(由于涉及数据敏感,故对INSERT语句进行了修改,请按照本身需求更改)
--/ -----此处对存储过程进行声明 begin atomic declare i integer; set i=14000021; while i<=14000080 do INSERT INTO OMS_BANK_TRANFLOW_INFO ( OBI_TRANFLOWNO, OBI_BIE, OBI_BME, OBI_IE, ) VALUES ( '私房菜', 'CNY', '0.01', '201809'||trim(char(i)), '01', ); set i=i+1; end while; END / -----此处对存储过程进行声明,与开头对应
说明:'201809'||trim(char(i)) 是对主键的拼接,上述代码主键插入的值为20180914000021~20180914000080,共计60条数据。