主要实例:把临时表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. struts-2.5.14.1中jar包引入

  2. asp.net 代码片段的

    片段标签                                                   说明 <%                                      ...

  3. Win10 通过附加进程调试时出现“此任务要求应用程序具有提升的权限”

    最近有新人在使用vs调试时出现了“此任务要求应用程序具有提升的权限”的提示,每次调试vs就会重启一次. 问到我时,我经过查了一番资料才给解决掉了. 其实,问题主要是因为直接启动vs项目时没有足够的权限 ...

  4. 【leetcode】296.Best Meeting Point

    原题 A group of two or more people wants to meet and minimize the total travel distance. You are given ...

  5. Django的请求生命周期与中间件中的5中方法

    请求生命周期: 客户端——>WSGI——> 中间件——>路由匹配——>视图函数——>WSGI——>客户端 中间件: 在全局层明处理请求和响应的 form djang ...

  6. Image Processing and Analysis_8_Edge Detection:Multiresolution edge detection techniques ——1995

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  7. iOS AVPlayer 的使用实践

    前两天在网上看到一篇博客,介绍AVPlayer的使用,但是只简单介绍了一下单个的本地文件如何播放,心血来潮,就想着做一个类似于播放器的东西,能够实现播放网络歌曲,循环播放多首音乐,下面我们来实现一下 ...

  8. TLV320AIC3268寄存器读写

    该芯片支持I2C和SPI读写寄存器,本人用的是SPI1接口. 以下是对手册中SPI接口读写寄存器相关内容的翻译(英文版可以看手册的94页~) 在SPI控制模式下,TLV320AIC3268使用SCL_ ...

  9. textbox 输入值提示。。。(类似百度搜索)

    public void textBox5_xiala() { DataSet ds = SQl_yuji.ds_cinvname(); this.textBox5.AutoCompleteMode = ...

  10. kubernetes之pod生命周期,pod重启策略, 镜像拉取策略

    pod声明周期(状态):pending , running, succeeded, failed, unknown 挂起(Pending):Pod 已被 Kubernetes 系统接受,但有一个或者多 ...