主要实例:把临时表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三种数据库的造数存储过程实例的更多相关文章

  1. oracle,mysql,SqlServer三种数据库的分页查询的实例。

    MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如 ...

  2. mysql oracle sqlserver三种数据库count函数返回值不一样

    SQLQuery countSqlQuery = userDAO.createSQLQuery("select count(id) from fhcb_08_tbl_user"); ...

  3. qlserver、Mysql、Oracle三种数据库的优缺点总结

    这篇文章主要介绍了sqlserver.Mysql.Oracle三种数据库的优缺点总结,需要的朋友可以参考下   一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能 ...

  4. MySQL - 常见的三种数据库存储引擎

    原文:MySQL - 常见的三种数据库存储引擎 数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧. ...

  5. oracle,mysql,SqlServer三种数据库的分页查询

    MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如 ...

  6. [转载]sqlserver、Mysql、Oracle三种数据库的优缺点总结

    一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等:为数据管理与分析带来了灵活性,允许单位在快速变化的环境中 ...

  7. Mysql常用的三种数据库引擎比较

    ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数.因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源.ISA ...

  8. MySQL、SqlServer、Oracle 三种数据库的优缺点

    MySQL.SqlServer.Oracle 三种数据库的优缺点 一.MySQL 优点: 缺点: 二.SqlServer 优点: 缺点: 三.Oracle 优点: 缺点: 一.MySQL 优点: 体积 ...

  9. MySQL、SqlServer、Oracle,这三种数据库的优缺点,你知道吗?

    盘点MySQL.SqlServer.Oracle 三种数据库优缺点 MySQL SqlServer Oracle 一.MySQL 优 点 体积小.速度快.总体拥有成本低,开源:支持多种操作系统:是开源 ...

随机推荐

  1. echarts —— 重叠图

    平时做堆叠图比较多,但是今天遇到一个要做重叠图的需求,记录一下~ 1.堆叠图,对应的 series: [] ,需要设置一个stack: "1",其中每个堆叠图的stack属性值都要 ...

  2. Redis分布式缓存安装和使用

    独立缓存服务器: LinuxCentOS Redis版本: 3.0 下面我们针对于Redis安装做下详细的记录: 编译和安装所需的包: #yum install gcc tcl创建安装目录:贵州中医肝 ...

  3. GoTests工具自动化test使用

    安装 $go get -u github.com/cweill/gotests/... 复制代码 具体使用示例 用法 $gotests [options] PATH ... 复制代码 options说 ...

  4. 如何给mysql数据库添加一个用户

    首先以root身份登录到MySQL服务器中. $ mysql -u root -p 当验证提示出现的时候,输入MySQL的root帐号的密码. 创建一个MySQL用户 使用如下命令创建一个用户名和密码 ...

  5. systemctl automatically restart service

    systemctl automatically restart service  Pothi Kalimuthu  Linux  October 9, 2016 0 Minutes Reference ...

  6. Redis数据类型操作说明

    List数据操作 lpush 语法:lpush key value [value…] 作用:将一个或多个值 value 插入到列表 key 的表头(最左边),从左边开始加入值,从左到右的顺序依次插入到 ...

  7. 【Amaple教程】4. 组件

    在Amaple单页应用中,一个页面其实存在两种模块化单位,分别是 模块 (am.Module类),它是以web单页应用跳转更新为最小单位所拆分的独立块: 组件 (am.Component类),它的定位 ...

  8. UVALive 6858——分类讨论&&水题

    题目 链接 题意:对于一个$n \times m$的矩阵的最外一圈,问是否能用$k \times 1$的方块填满 分析 考虑左右两边的情况,分类讨论,切记考虑所有可能的情形. #include< ...

  9. 小tip: 使用SVG寥寥数行实现圆环loading进度效果(转载)

    设计师设计了一个图片上传圆环loading进度效果.如下截图: 首先,CSS3是可以实现的,以前写过一篇转大饼的文章:“CSS3实现鸡蛋饼饼状图loading等待转转转”.原理跟这个一模一样,两个半区 ...

  10. 【leetcode】1289. Minimum Falling Path Sum II

    题目如下: Given a square grid of integers arr, a falling path with non-zero shifts is a choice of exactl ...