mysql怎么插入10w测试数据_面试题:如何造10w条测试数据,在数据库插入10w条不同数据...

前言

面试题:如果造10w条测试数据,如何在数据库插入10w条数据,数据不重复

最近面试经常会问到sql相关的问题,在数据库中造测试数据是平常工作中经常会用到的场景,一般做压力测试,性能测试也需在数据库中先准备测试数据。那么如何批量生成大量的测试数据呢?

由于平常用python较多,所以想到用python先生成sql,再执行sql往数据库插入数据。

使用语言:python 3.6

插入数据

首先我要插入的 SQL 语句,需每条 id 不重复 ,下面是执行单个插入语句

INSERT INTO `apps`.`apiapp_card` (`id`, `card_id`, `card_user`, `add_time`) VALUES ('1', '', 'test123', '2019-12-17');

10w 太多执行时间长,用 python 先生成 1w条测下执行时间。

首先要生成多个insert 语句,这里我用 python 语言写段生成sql的脚本。

用 %s 替换需要变的字段值,如果有多个值都需要变,可以用多个%s替换对应值,我这里设计的表,只要id不一样就可以插入成功。

用for 循环,每次循环 id 加1,这样 id 就可以保证不会重复,否则插入数据库时有重复的无法写入成功。

a 是追加写入

每条sql后面分号隔开

每次写入数据,最后面加\n 换行

# python3

# 作者:上海-悠悠

for i in range(10000):

a = "INSERT INTO `apps`.`apiapp_card` (`id`, `card_id`, `card_user`, `add_time`) VALUES ('%s', '', 'test123', '2019-12-17');"%str(i+1)

with open("a.txt", "a") as fp:

fp.write(a+"\n")

执行python代码,在本地生成一个 a.text 文件,打开生成的数据,部分如下

INSERT INTO `apps`.`apiapp_card` (`id`, `card_id`, `card_user`, `add_time`) VALUES ('1', '', 'test123', '2019-12-17');

INSERT INTO `apps`.`apiapp_card` (`id`, `card_id`, `card_user`, `add_time`) VALUES ('2', '', 'test123', '2019-12-17');

INSERT INTO `apps`.`apiapp_card` (`id`, `card_id`, `card_user`, `add_time`) VALUES ('3', '', 'test123', '2019-12-17');

INSERT INTO `apps`.`apiapp_card` (`id`, `card_id`, `card_user`, `add_time`) VALUES ('4', '', 'test123', '2019-12-17');

......

INSERT INTO `apps`.`apiapp_card` (`id`, `card_id`, `card_user`, `add_time`) VALUES ('10

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值