Mysql和Postgresql批量生成数据

Mysql

mysq不能独立运行sql片段, 所以必能通过运行函数或者存储过程方式来编程生成表数据

DROP PROCEDURE IF EXISTS generateUserInfo;
CREATE PROCEDURE generateUserInfo(in n int)
BEGIN
	DECLARE k INT;
	declare cityVar VARCHAR(100) DEFAULT '深圳';
	declare genderVar char(1) default '女'; -- 变量声明必须要在最前面
	SET k = 2;
	WHILE k <= n DO
		CASE k % 2 
		WHEN 0 THEN
			SET genderVar = '女'; -- 必须有分号
		ELSE 
			SET genderVar = '男';
		END CASE;
		CASE
				k % 2 
		WHEN 0 THEN
				SET cityVar = '深圳';
		WHEN 1 THEN
			SET cityVar = '广州';
		WHEN 2 THEN
				SET cityVar = '武汉';
		WHEN 3 THEN
				SET cityVar = '北京';
		WHEN 4 THEN
				SET cityVar = '上海';
		WHEN 5 THEN
				SET cityVar = '孝感';
		ELSE 
				SET cityVar = '中山';
		END case; -- 必须要有case
		INSERT INTO user_info_t ( id, user_id, user_ext_id, nickname, email, gender, birthday, score, reg_time, last_login_time, vip, city )
		VALUES
			(k,k,k,concat( 'user', k ),'yc@qq.com',genderVar,
			'2020-10-03 00:00:00',0,'2017-10-01 00:00:00','2017-10-24 21:30:36',1,cityVar);
		SET k = k + 1;
	END WHILE;
END;

DELETE  FROM 	user_info_t  WHERE	id >= 2;
-- 函数使用select调用, 过程使用call调用
CALL generateUserInfo(100);

Postgresql

pg支持运行独立的sql判断, 不需要创建额外的函数或存储过程

DELETE  FROM 	user_t  WHERE	id >= 2;
-- pg可以支持sql片段的运行
DO $$
DECLARE k integer := 2;
begin 
	WHILE k <= 100 
	loop
				INSERT INTO user_t ( id, NAME, PASSWORD, create_time, update_tinme, create_by, update_by )
		VALUES
			( k, concat( 'user', k ), NULL, now(), NULL, 'System Admin', NULL );
		k = k + 1
  end loop
END $$;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁月玲珑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值