主要实例:把临时表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. 简单SQL注入试探、一

    DVWA——简单SQL注入小记 前不久刚开始接触SQL注入,今天来记录一些最近的一些收获和一些SQL注入方面的知识. 主要是基于DVWA这个开源的平台来进行练习. 废话不多说开始解题. 从简单的SQL ...

  2. # 机器学习算法总结-第六天(Adaboost算法)

    SKlearn中的Adaboost使用 主要调的参数:第一部分是对我们的Adaboost的框架进行调参, 第二部分是对我们选择的弱分类器进行调参. 使用 Adaboost 进行手写数字识别 导入库,载 ...

  3. Nginx配置客户端SSL双向认证

    对于 NGINX 的 HTTPS 配置,通常情况下我们只需要实现服务端认证就行,因为浏览器内置了一些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会自己校验证书的可 ...

  4. Socket问题

    http://www.cnblogs.com/mareymarey111/archive/2011/12/08/2280253.html

  5. Django form表单修改数据

    form: #!/usr/bin/env python #coding:utf8 from django.forms import Form,ModelForm import models class ...

  6. OpenJudge POJ C19C 贪心

    https://cn.vjudge.net/contest/309482#problem/C #include<bits/stdc++.h> using namespace std; ty ...

  7. zabbix4.0搭建

    一.准备工作 1.yum国内源的安装与更新 1.1 备份原repo文件 cd /etc/yum.repos.d/ mkdir repo_bak mv *.repo repo_bak 1.2 在cent ...

  8. sql防止注入的技巧

    from Stack Overflow Here is a similar solution which I think is more efficient in building up the li ...

  9. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 (LCT维护深度)

    要维护深度,就维护一下size就行了.access一下x,那么从根->x这一条链就独立成为一棵splay,那么splay的size节点数就是x的深度. 删边的时候直接access一下,splay ...

  10. HDU 6098 - Inversion | 2017 Multi-University Training Contest 6

    /* HDU 6098 - Inversion [ 贪心,数论 ] | 2017 Multi-University Training Contest 6 题意: 求出所有B[i] = max(A[j] ...