通过存储过程自动创建数据库

本文介绍了如何通过MySQL存储过程自动化创建分区表和拷贝表,以实现数据库的动态管理和分表功能,从而减轻数据库压力。同时,利用Kettle工具执行SQL脚本,实现数据库操作的自动化,详细解析了存储过程的编写和Kettle数据源配置步骤。
摘要由CSDN通过智能技术生成

起源

  1. 解决进行项目自动化配置
  2. 实现程序化的分表功能,减轻数据库压力

如何实现

  1. 通过在数据库中创建存储过程实现表创建功能
  2. 通过kettle实现数据库脚本的执行
  3. 需要解决kettle ktr脚本数据源配置问题

建表存储过程实现(适用于MySQL5.6+)

1. 生成分区表
CREATE DEFINER=`root`@`localhost` PROCEDURE `createPartitionTableWithPrimaryKey`(var VARCHAR(2000),var1 VARCHAR(100),f1 VARCHAR(30),f2 VARCHAR(30))
BEGIN
	SET @pdd = concat('CREATE table ', var,' select * from ',var1,' where 1=2');
	PREPARE stmt1 FROM @pdd;
	EXECUTE stmt1;
  DEALLOCATE PREPARE stmt1;
  SET @pdd3 = concat('ALTER TABLE ', var, ' ADD PRIMARY KEY (',f1,',',f2,')');
  PREPARE stmt2 FROM @pdd3;
  EXECUTE stmt2;
  DEALLOCATE PREPARE stmt2;
END

此存储过程功能是根据一个已知表生成一个新表,可出入表名及主键条件。

2. 拷贝表
CREATE DEFINER=`root`@`localhost` PROCEDURE `copytable`(var VARCHAR(20))
BEGIN
SET @pddl = concat('ALTER TABLE ', var, ' RENAME ', var, DATE_FORMAT(NOW(), '%Y%m'));
PREPARE stmt FROM @pddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @pdd2 = concat('CREATE table ', var, ' select * from ', var, DATE_FORMAT(NOW(), '%Y%m where 1=2'));
PREPARE stmt1 FROM @pdd2;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END

根据传入表名进行表复制,并将表名命名为 “表名202107“的形式。

通过kettle脚本进行存储过程或sql脚本调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NewTech精选

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

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

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

打赏作者

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

抵扣说明:

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

余额充值