儲存過程 迴圈建立多張表 和 多個資料庫

2021-09-26 04:16:14 字數 4762 閱讀 3704

建立所有資料庫 呼叫:call create_databases('znke_z_log_', 0, 128);

引數說明:

1、要建立的資料庫字首

2、目標資料庫字尾最小數 

3、目標資料庫字尾最大數(資料庫總數量)

create procedure `create_databases`(in db_pre varchar(20),in min_num int,in max_num int)

begin

declare i int;

declare db_name varchar(20);

declare sql_text varchar(2000);

set i=min_num;

set db_name='';

set sql_text='';

while i刪除所有資料庫 呼叫:call delete_databases('znke_z_log_', 0, 60,3);

引數說明:

要刪除的資料庫字首

目標資料庫字尾最小數 

目標資料庫字尾最大數(資料庫總數量)

目標資料庫數字的位數

create procedure `delete_databases`(in db_pre varchar(20),in min_num int,in max_num int, in size int)

begin

declare i int;

declare db_name varchar(20);

declare sql_text varchar(2000);

set i=min_num;

set db_name='';

set sql_text='';

while i建立所有資料庫中的表.呼叫:call create_tables_of_databases('znke_z_log_', 'log' ,'znke_z_log.log' ,0 , 128);

引數說明:

1、目標資料庫的字首 

2、要建立到目標資料庫中的表名稱

3、源資料庫名稱.源表名稱(原理從已建立的庫中複製,所以先要在源資料庫中建立好設計好的表結構) 

4、目標資料庫字尾最小數 

5、目標資料庫字尾最大數(資料庫總數量)

create procedure `create_tables_of_databases`(in db_pre varchar(20),in table_name varchar(20),in source_db_and_tablename varchar(30),in min_num int,in max_num int)

begin

declare i int;

declare db_name varchar(20);

declare sql_text varchar(2000);

set i=min_num;

set db_name='';

set sql_text='';

while i刪除所有資料庫中的表呼叫:call delete_tables_of_databases('znke_z_log_', 'log'  ,0 , 128, 3);

引數說明:

目標資料庫的字首 

要建立到目標資料庫中的表名稱 

目標資料庫字尾最小數 

目標資料庫字尾最大數(資料庫總數量)

目標資料庫數字的位數

create procedure `delete_tables_of_databases`(in db_pre varchar(20),in table_name varchar(20),in min_num int,in max_num int, in size int)

begin

declare i int;

declare db_name varchar(20);

declare sql_text varchar(2000);

set i=min_num;

set db_name='';

set sql_text='';

while i建立資料庫中所有分表(單庫多表 分片模式)呼叫:call create_tables('test', 'user_', 0 ,128);

引數說明:

1、目標資料庫(在該資料庫中建立很多分表) 

2、要建立到目標資料庫中的表字首 

3、目標資料庫字尾最小數 

4、目標資料庫字尾最大數(資料庫總數量)

create procedure `create_tables`(in db_name varchar(20),in table_pre varchar(20), in min_num int,in max_num int)

begin

declare i int;

declare table_name varchar(20);

declare sql_text varchar(2000);

set i=min_num;

set table_name='';

set sql_text='';

while i刪除資料庫中所有分表(單庫多表 分片模式)呼叫:call delete_tables('test', 'user_', 0 ,128, 3);

引數說明:

目標資料庫(在該資料庫中建立很多分表) 

要建立到目標資料庫中的表字首 

目標資料庫字尾最小數 

目標資料庫字尾最大數(資料庫總數量)

目標資料庫數字的位數

create procedure `delete_tables`(in db_name varchar(20),in table_pre varchar(20), in min_num int,in max_num int, in size int)

begin

declare i int;

declare table_name varchar(20);

declare sql_text varchar(2000);

set i=min_num;

set table_name='';

set sql_text='';

while i引數說明:

1、目標資料庫

2、目標資料庫中的表字首  

create procedure drop_db_table(

db_name varchar(50), # 資料庫名稱

tb_prefix varchar(150) # 表字首

)begin

declare done int default 0; #游標的標誌位

declare a varchar(260);

declare cur1 cursor for select table_name from information_schema.tables where table_schema=db_name and table_name like concat(tb_prefix, '%');

declare continue handler for sqlstate '02000' set done = 1;

open cur1;

repeat

fetch cur1 into a;

if not done then

set @e=concat('drop table ',db_name,'.',a); # 拼刪除命令

prepare stmt1 from @e;

execute stmt1; # 執行命令

deallocate prepare stmt1; #釋放物件

end if;

until done end repeat;

close cur1;

end;

引數說明:

目標資料庫中的表字首  

目標資料庫字尾最大數(資料庫總數量)

目標資料庫數字的位數

drop procedure if exists `merage_branch_table`;

create procedure `merage_branch_table`(

in p_table_name varchar(200),

in p_branch_size int,

in p_lpad int

)begin

declare m_begin_row int default 0;

set @m_merage_sql = '';

while m_begin_rowif(m_begin_row=p_branch_size-1)

then set @m_merage_sql = concat(@m_merage_sql, 'select * from ', p_table_name, '_', lpad(m_begin_row, p_lpad, 0));

else set @m_merage_sql = concat(@m_merage_sql, 'select * from ', p_table_name, '_', lpad(m_begin_row, p_lpad, 0),' union all ');

end if;

set m_begin_row = m_begin_row+1;

end while;

prepare main_stmt from @m_merage_sql;

execute main_stmt;

end;

儲存過程建立多張表

delimiter create procedure score p begin declare i int declare table name varchar 20 declare table pre varchar 20 declare sql text varchar 2000 set i ...

mysql 儲存過程建立多個表

要建立64個表,聽到這一需求,必然要用儲存過程。直接上 delimiter use table drop procedure if exists p create definer root localhost procedure p begin declare i int declare table...

Logstash配置多張表和多個資料來源

配置多個資料來源和不同的表訪問多個配置 解決問題 資料已經匯入完成 logstash還一直迴圈匯入資料 定時器設定時間有點短 同步資料兩種方案 方案一 每一次同步都是從頭同步的 1.clean run true就好了 2.schedule 根據你的業務需求看定多長時間比較合適 要是想使用每分鐘執行一...