MySql、PostgreSql、SqlServer三种数据库的造数存储过程实例
主要实例:把临时表tmp_table数据插入到目标表target_table
一、MySql造数存储过程实例
mysql造数
-- 第一步,创建临时表
CREATE TEMPORARY TABLE
IF NOT EXISTS tmp_table (
`id` VARCHAR (64) NOT NULL,
`second_id` VARCHAR (64) NOT NULL,
`total_amount` DOUBLE (18, 2) DEFAULT NULL,
`total_day` INT (11) DEFAULT NULL,
`create_time` datetime NOT NULL,
`edit_time` datetime DEFAULT NULL,
`editor` VARCHAR (50) DEFAULT NULL,
`status` INT (11) NOT NULL DEFAULT ''
) DEFAULT CHARSET = utf8mb4; -- 第二步,使用前先清空临时表
TRUNCATE TABLE tmp_table; -- 第三步,定义存储过程
-- 生成5-10位随机正整数ceiling(5 - 1 + rand() *(10 -(5 - 1)))
-- 生成5-7位随机正整数 FLOOR(5 + RAND() *(7 + 1 - 5))
#定义存储过程
delimiter ##num_limit 要插入数据的数量,rand_limit 最大随机的数值
DROP PROCEDURE
IF EXISTS insert_test_val ;
CREATE PROCEDURE insert_test_val (IN num_limit INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE id VARCHAR (64) DEFAULT 1;
DECLARE second_id VARCHAR (64) DEFAULT 1;
WHILE i <= num_limit DO
INSERT INTO testdb.tmp_table (
`id`,
`second_id`,
`total_amount`,
`total_day`,
`create_time`,
`edit_time`,
`editor`,
`status`
)
VALUES
(
id,
second_id,
ceiling(5 - 1 + rand() *(10 -(5 - 1))),
FLOOR(5 + RAND() *(7 + 1 - 5)),
SYSDATE(),
SYSDATE(),
'mysql存储过程',
''
) ;
SET id = id + 1 ;
SET second_id = second_id + 1 ;
SET i = i + 1 ;
END
WHILE ;
END -- 第四步,调用存储过程,插入1万条数据
#调用存储过程
CALL insert_test_val (10000) ; -- 第五步,可跳过
#查看临时表(检查存储过程是否生成数据)
SELECT * FROM tmp_table ; -- 第六步,插入到目标表
INSERT INTO `testdb`.`target_table` (`id`,`second_id`,`total_amount`,`total_day`,`create_time`,`edit_time`,`editor`,`status`) SELECT * FROM tmp_table ; -- 第七步,删除存储过程生成的数据(若不需要删除则跳过)
DELETE FROM target_table WHERE id = second_id ; -- 第八步,删除存储过程(若不需要删除则跳过)
DROP PROCEDURE IF EXISTS insert_test_val ;
二、PostgreSql造数存储过程实例
postgresql造数
-- 第一步,创建临时表
CREATE TEMPORARY TABLE
IF NOT EXISTS tmp_table2 (
"encryptionphone_text" VARCHAR (32) COLLATE "default",
"user_id" int4,
"target_code" VARCHAR (32) COLLATE "default",
"target_time" TIMESTAMP (6),
"creator" VARCHAR (128) COLLATE "default",
"create_time" TIMESTAMP (6) DEFAULT now(),
"editor" VARCHAR (128) COLLATE "default",
"edit_time" TIMESTAMP (6) DEFAULT now(),
"status" bool DEFAULT TRUE
); -- 第二步,使用前先清空临时表
TRUNCATE TABLE tmp_table2; -- 第三步,定义存储过程,num_limit 要插入数据的数量
DROP FUNCTION
IF EXISTS insert_test2(); CREATE OR REPLACE FUNCTION insert_test2(IN num_limit INT) RETURNS void AS
$$
DECLARE i INT DEFAULT 1;
DECLARE encryptionphone_text INT DEFAULT 1;
DECLARE initDate INT DEFAULT 1565332582;
DECLARE initDateStr timestamp; BEGIN WHILE i <= num_limit LOOP initDateStr := to_timestamp(initDate+60*60*24*1+encryptionphone_text%(60*60*24*17)); INSERT INTO tmp_table2 (
"encryptionphone_text",
"user_id",
"target_code",
"target_time",
"creator",
"create_time",
"editor",
"edit_time",
"status"
)
VALUES
(
'1a2b3c4d5e6f7g8h9i' || CAST (@encryptionphone_text AS VARCHAR (32)),
i,
'',
initDateStr,
'insert_test2函数所造',
now(),
NULL,
now(),
't'
);
encryptionphone_text := encryptionphone_text + 1;
i := i + 1;
END LOOP; END;
$$ LANGUAGE plpgsql; -- 第四步,调用存储过程,插入1万条数据
SELECT insert_test2(10000);
-- 第五步,查询临时表(可跳过)
select * from tmp_table2; -- 第六步,插入到目标表
INSERT INTO target_table("encryptionphone_text", "user_id", "target_code", "target_time", "creator", "create_time", "editor", "edit_time", "status")
SELECT * from tmp_table2; -- 第七步,检查插入数据是否正确
SELECT count(1) from target_table; -- 第八步,删除存储过程(若不需要删除则跳过)
DROP FUNCTION insert_test2(IN num_limit INT);
除了上面格式的存储过程,可在转化数据后再插入数据,例子如下:
-- 第一步,创建临时表
CREATE TEMPORARY TABLE if not exists tmp_table
("phone_md5" varchar(32) COLLATE "default"); -- 第二步,使用前先清空临时表
TRUNCATE TABLE tmp_table; -- 第三步,定义存储过程,num_limit 要插入数据的数量
DROP FUNCTION
IF EXISTS insert_test1();
CREATE OR REPLACE FUNCTION insert_test1(IN num_limit INT) RETURNS void AS
$$
DECLARE i INT DEFAULT 1390000000;
BEGIN
WHILE i <= num_limit LOOP
INSERT INTO tmp_table("phone_md5")
VALUES (i);
i := i + 1;
END LOOP;
END;
$$ LANGUAGE plpgsql; -- 第四步,调用存储过程,插入1万条数据
SELECT insert_test1(1390010000);
-- 第五步,查询临时表(可跳过)
select * from tmp_table; -- 第六步,插入到目标表
INSERT INTO encryptionphone_list("phone_md5")
SELECT md5(phone_md5) from tmp_table; -- 第七步,检查插入数据是否正确
SELECT count(1) from encryptionphone_list; -- 第八步,删除存储过程
DROP FUNCTION insert_test1(IN num_limit INT);
三、SqlServer造数存储过程实例
sqlserver造数
-- 第一步,删掉##aa缓存表
drop table ##aa; -- 第二步,定义缓存表##aa
if OBJECT_ID('tempdb..##aa') is not null
drop table ##aa
CREATE TABLE ##aa(
[phone] varchar(32) NULL ,
[name] varchar(32) NULL ,
[CreateDate] datetime NULL DEFAULT (getdate()) ,
[EditDate] datetime NULL DEFAULT (getdate())
) -- 第三步,清空缓存表
TRUNCATE TABLE ##aa; -- 第四步,定义存储过程,并执行
DECLARE @i INT
DECLARE @s VARCHAR(20)
declare @phone int
SET @i=1
set @phone=10000000
WHILE @i<=10000000
BEGIN
SELECT @s=CAST(@i as VARCHAR(20))
insert into ##aa
select ''+CAST(@phone as VARCHAR(20)), '简单存储生成'+i, GETDATE(), GETDATE()
set @phone=@phone+1
set @i=@i+1
end -- 第五步,把缓存表数据插入到目标表
insert into target_table( [phone], [name], [CreateDate], [EditDate])
select * from ##aa; -- 第六步,检查目标表数据
select * from target_table;
MySql、PostgreSql、SqlServer三种数据库的造数存储过程实例的更多相关文章
- oracle,mysql,SqlServer三种数据库的分页查询的实例。
MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如 ...
- mysql oracle sqlserver三种数据库count函数返回值不一样
SQLQuery countSqlQuery = userDAO.createSQLQuery("select count(id) from fhcb_08_tbl_user"); ...
- qlserver、Mysql、Oracle三种数据库的优缺点总结
这篇文章主要介绍了sqlserver.Mysql.Oracle三种数据库的优缺点总结,需要的朋友可以参考下 一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能 ...
- MySQL - 常见的三种数据库存储引擎
原文:MySQL - 常见的三种数据库存储引擎 数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧. ...
- oracle,mysql,SqlServer三种数据库的分页查询
MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如 ...
- [转载]sqlserver、Mysql、Oracle三种数据库的优缺点总结
一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等:为数据管理与分析带来了灵活性,允许单位在快速变化的环境中 ...
- Mysql常用的三种数据库引擎比较
ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数.因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源.ISA ...
- MySQL、SqlServer、Oracle 三种数据库的优缺点
MySQL.SqlServer.Oracle 三种数据库的优缺点 一.MySQL 优点: 缺点: 二.SqlServer 优点: 缺点: 三.Oracle 优点: 缺点: 一.MySQL 优点: 体积 ...
- MySQL、SqlServer、Oracle,这三种数据库的优缺点,你知道吗?
盘点MySQL.SqlServer.Oracle 三种数据库优缺点 MySQL SqlServer Oracle 一.MySQL 优 点 体积小.速度快.总体拥有成本低,开源:支持多种操作系统:是开源 ...
随机推荐
- 【jekins】安装jdk遇到的坑
首先我电脑版本为win10 64 在安装JDK时先安装了jdk包,安装路径为D:\Java\jdk1.8.0_171,装完jdk后,自动安装jre,我将其安装在D:\Java\jre1.8.0_171 ...
- input checkbod 全选 反选
<script> var CheckBox=div.getElementsByTagName('input'); ...
- git 账号密码
由于git迁移服务地址,而导致无法登陆 首先 git config --system --unset credential.helper 然后执行 git config --global cred ...
- Pycharm Community 配置 Django 开发环境
1. 安装数据库可视化工具 Database Navigator 2. 括号匹配高亮工具 HighlightBracketPair (...) Web 开发放弃 Pycharm Community 版 ...
- 牛客练习赛53 E 老瞎眼 pk 小鲜肉 (线段树,思维)
链接:https://ac.nowcoder.com/acm/contest/1114/E来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...
- JSON 语法 数据格式
我们先来看下w3cschool对json的定义: JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XM ...
- tsung报告中Transactions Statistics缺失问题
长时间没有做性能测试,最近在使用tsung进行性能测试时,修改tsung自带的范例脚本后,运行查看结果时,发现测试报告中transactions statistics缺失,刚开始一直以为是监控中的配 ...
- 微信小程序获取地理位置授权
微信小程序获取地理位置授权,首先需要在app.json中添加配置: "permission": { "scope.userLocation": { " ...
- json.loads 报错 json.decoder.JSONDecodeError
json.loads报json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes 出现这个错误其实只 ...
- Linux初始化脚本
以下脚本用于linux系统的初始化脚本,可以在服务器系统安装完毕之后立即执行.脚本结合各位大牛一些参数,已经在CentOS 5下通过. 使用方法:将其复制,保存为一个shell文件,比如init.sh ...