MySQL 存储过程中执行DDL
一、定期增加表分区
1、增加表分区例
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `p_create_Partition`(IN databaseName VARCHAR(50),IN tableName VARCHAR(50))
L_END:BEGIN
DECLARE V_SQL VARCHAR(500);
DECLARE D1 VARCHAR(20) DEFAULT 0;
DECLARE D2 VARCHAR(20) DEFAULT 0;
SELECT CONCAT('p',DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 2 day),'%Y%m%d')) INTO D1;
SELECT CONCAT('''',DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 2 day),'%Y-%m-%d'),'''') INTO D2;
SET V_SQL=CONCAT('ALTER TABLE ',databaseName,'.',tableName,' REORGANIZE PARTITION pmax INTO ( PARTITION ',D1,' VALUES LESS THAN (',D2,'),'
'PARTITION pmax VALUES LESS THAN (MAXVALUE))');
set @V_SQL=V_SQL;
PREPARE stmt FROM @v_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
2、定时器
1)crontab
#################################
## mysql add partition
## 2018
#################################
30 6 * * * /u01/dba_scripts/mysql_add_partition/mysql_add_partition_tables.sh
2)脚本
cat /u01/dba_scripts/mysql_add_partition/mysql_add_partition_tables.sh
##############################
##
##
##############################
logdir=/u01/dba_scripts/mysql_add_partition
exec >> $logdir/all_out.log 2>&1
startdate=`date +%Y-%m-%d\ %H:%M:%S`
echo "Start mysql_add_partition,$startdate"
user=root
password=xxxxxxxxxx
host=127.0.0.1
do
echo "exec table $i:"
j=`mysql -u"$user" -p"$password" -h"$host" -e"select db from dbadmin.part_tables where tab_name='$i'"|tail -n +2`
mysql -u"$user" -p"$password" -h"$host" -e "call dbadmin.p_create_Partition('$j','$i')" #>> "$logdir"/mylog.log 2>&1
done
enddate=`date +%Y-%m-%d\ %H:%M:%S`
echo "End mysql_add_partition,$enddate"
echo ""
二、定期删除表分区
1、删除表分区
create procedure dbadmin.tab_drop_partition()
begin
DECLARE pstring_drop_part Varchar(1000);
DECLARE part_name VARCHAR(20);
set part_name = concat('p', date_format( DATE_SUB(CURDATE(), INTERVAL 6 day),'%Y%m%d'));
set pstring_drop_part =concat('alter table ifpay_ccpay.spider_alive_report drop partition ',part_name);
select pstring_drop_part;
Execute Immediate pstring_drop_part;
end;
2、定时器
1)定时器
2)脚本
cat mysql_drop_partition_tables.sh
#!/bin/bash
##############################
## drop partition
## 2018/12/25
##############################
logdir=/u01/dba_scripts/mysql_drop_partition
exec >> $logdir/drop_part_out.log 2>&1
startdate=`date +%Y-%m-%d\ %H:%M:%S`
echo "$startdate,Start mysql_drop_partition"
user=root
password=xxxxxxxxx
host=127.0.0.1
mysql -u"$user" -p"$password" -h"$host" -e "call dbadmin.tab_drop_partition()"
enddate=`date +%Y-%m-%d\ %H:%M:%S`
echo "$enddate,End mysql_drop_partition"
echo ""
MySQL 存储过程中执行DDL的更多相关文章
- MYSQL存储过程中常使用的命令记录
MYSQL存储过程中常使用的命令记录 1.触发器trigger 查看:show triggers; 2.存储过程procedure 查看:show procedure status; 查看详细:sho ...
- 在Hive中执行DDL之类的SQL语句时遇到的一个问题
在Hive中执行DDL之类的SQL语句时遇到的一个问题 作者:天齐 遇到的问题如下: hive> create table ehr_base(id string); FAILED: Execut ...
- 【转】MySQL存储过程中使用动态行转列
MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...
- MySQL存储过程中的3种循环,存储过程的基本语法,ORACLE与MYSQL的存储过程/函数的使用区别,退出存储过程方法
在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...
- 在存储过程中执行3种oracle循环语句
create or replace procedure pr_zhaozhenlong_loop /* 名称:在存储过程中执行3种循环语句 功能:利用循环给表中插入数据 调用: begin -- Ca ...
- MYSQL存储过程中的IN、OUT和INOUT
MYSQL存储过程中的IN.OUT和INOUT,不能简单理解为一个方法的参数和返回值,而是面向整个过程上下文变量的. 一.MySQL 存储过程参数(in) 基本可以理解为传入function的参数,而 ...
- Mysql 存储过程中使用多游标
Mysql 存储过程中使用多游标 drop procedure IF EXISTS test_proc_1; create procedure test_proc_1() begin ; ) ; ) ...
- MySQL存储过程中使用SELECT …INTO语句为变量赋值
使用SELECT …INTO语句为变量赋值 在MySQL存储过程中,可以使用SELECT …INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量.SELECT …INTO语句 ...
- MySQL 语句中执行优先级——and比or高
转: MySQL 语句中执行优先级——and比or高 2017年04月20日 13:33:03 十步行 阅读数:7381 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...
随机推荐
- CF873B Balanced Substring
1到n内0,1个数相同的个数的最长字串 \(i>=j\) \[1的个数=0的个数\] \[sum[i]-sum[j-1]=i-(j-1) - (sum[i]-sum[j-1])\] 这里把\(( ...
- 如何将一个Winform嵌入到一个Control当中
/// <summary> /// 将一个winform窗体嵌入control中 /// </summary> /// <param name="f" ...
- C++快速输入输出优化
在这里存一下我的快速输入输出优化 以及写题模板 这里的是$getchar$优化和$putchar$优化,$fread$和$fwrite$暂时咕咕咕 快速输入 这里$define$了一个$I\_int$ ...
- java中年月日的加减法,年月的加减法使用
本文为博主原创,未经允许不得转载: java计算两个年月日之间相差的天数: public static int daysBetween(String smdate,String bdate) thro ...
- 正则表达式及R字符串处理之终结版
http://yphuang.github.io/blog/2016/03/15/regular-expression-and-strings-processing-in-R/ 0.动机:为什么学习字 ...
- Java中一种无意识的递归
来自: Java编程思想P287 public class Main { /** * @param args */ @Override public String toString() { retur ...
- windows 命令行中使用winrar
加入环境变量即可 我的电脑右键属性->高级->环境变量->系统变量->编辑 变量名:path 变量值:C:/Program Files/WinRAR; --变量值为WinRAR ...
- preg_match
$baseUrl = request()->baseUrl(); if (!preg_match('/admin.php/',$baseUrl)) { $this->redirect('/ ...
- 定义c/c++全局变量/常量几种方法的区别
转自:http://www.cnblogs.com/yaozhongxiao/archive/2010/08/08/1795338.html 1. 编译单元(模块): 在ide开发工具大行其道的今天, ...
- steam
1.steam 教育 Science(科学), Technology(技术), Engineering(工程), Arts(艺术), Maths(数学) 2. steam 平台 Steam英文原译为 ...