Create all database calls: call create_databases('znke_z_log_', 0, 128);
parameter description:
1. The database prefix to be created
2, the minimum number
of target database suffixes 3, the maximum number of target database suffixes (total number of databases)
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<max_num DO SET db_name=CONCAT(db_pre, LPAD(i, LENGTH(max_num), '0')); SET sql_text=CONCAT('CREATE DATABASE ', db_name, '' ); SELECT sql_text; SET @sql_text=sql_text; PREPARE stmt FROM @sql_text; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET i=i+1; END WHILE; END;
Delete all databases call: call delete_databases('znke_z_log_', 0, 60,3);
parameter description:
1. The database prefix to be deleted
2, the minimum number
of target database suffixes 3, the maximum number of target database suffixes (total number of databases)
4. The number of digits in the target database
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<max_num DO SET db_name=CONCAT(db_pre, LPAD(i, size, '0')); SET sql_text=CONCAT('DROP DATABASE ', db_name, '' ); SELECT sql_text; SET @sql_text=sql_text; PREPARE stmt FROM @sql_text; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET i=i+1; END WHILE; END;
Create tables in all databases. Call: CALL create_tables_of_databases('znke_z_log_', 'log' ,'znke_z_log.log' ,0 , 128);
Parameter description:
1. The prefix
of the target database 2. The table to be created in the target database Name
3. Source database name. Source table name (the principle is copied from the created library, so the designed table structure must be created in the source database first)
4. The minimum number of target database suffixes is
5, and the maximum number of target database suffixes ( total number of databases)
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<max_num DO SET db_name=CONCAT(db_pre, LPAD(i, LENGTH(max_num), '0')); SET sql_text=CONCAT('CREATE TABLE ', db_name , '.' ,table_name ,' LIKE ' ,source_db_and_tableName); SELECT sql_text; SET @sql_text=sql_text; PREPARE stmt FROM @sql_text; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET i=i+1; END WHILE; END;
Delete all tables in the database Call: CALL delete_tables_of_databases('znke_z_log_', 'log' ,0 , 128, 3);
Parameter description:
1. The prefix
of the target database 2. The name of the table to be created in the target database
3. The target database Minimum number of suffixes
4, maximum number of target database suffixes (total number of databases)
5. The number of digits in the target database number
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<max_num DO SET db_name=CONCAT(db_pre, LPAD(i, size, '0')); SET sql_text=CONCAT('DROP TABLE ', db_name , '.' ,table_name); SELECT sql_text; SET @sql_text=sql_text; PREPARE stmt FROM @sql_text; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET i=i+1; END WHILE; END;
Create all sub-tables in the database (single database multi-table fragmentation mode) call: call create_tables('test', 'user_', 0 ,128);
parameter description:
1. Target database (create many sub-tables in this database)
2. The table prefix to be created in the target database
3, the minimum number
of target database suffixes 4, the maximum number of target database suffixes (total number of databases)
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<max_num DO SET table_name=CONCAT(table_pre, LPAD(i, LENGTH(max_num), '0')); SET sql_text=CONCAT('CREATE TABLE ',db_name ,'.',table_name, '( id VARCHAR(32) NOT NULL, user_id VARCHAR(32), PRIMARY KEY (id) ) ENGINE=INNODB DEFAULT CHARSET=utf8' ); SELECT sql_text; SET @sql_text=sql_text; PREPARE stmt FROM @sql_text; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET i=i+1; END WHILE; END;
Delete all sharded tables in the database (single database multi-table sharding mode) call: call delete_tables('test', 'user_', 0 ,128, 3);
Parameter description:
1. Target database (create many shards in this database 2. Table
prefix to be created in the target database
3, minimum number
of target database suffixes 4, maximum number of target database suffixes (total number of databases)
5. The number of digits in the target database number
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<max_num DO SET table_name=CONCAT(table_pre, LPAD(i, size, '0')); SET sql_text=CONCAT('DROP TABLE ', db_name , '.' ,table_name); SELECT sql_text; SET @sql_text=sql_text; PREPARE stmt FROM @sql_text; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET i=i+1; END WHILE; END;Drop the table with the specified prefix in the database Call: call Drop_Db_Table('test', 'user_'); Parameter description:
1. Target database
2. Table prefix in the target database
CREATE PROCEDURE Drop_Db_Table( DB_NAME varchar(50), # database name TB_PREFIX varchar(150) # table prefix ) BEGIN DECLARE done INT DEFAULT 0; #The flag bit of the cursor 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); # Spell delete command PREPARE stmt1 FROM @E; EXECUTE stmt1; # execute the command DEALLOCATE PREPARE stmt1; #Release the object END IF; UNTIL done END REPEAT; CLOSE cur1; END;
调用:call merage_branch_table('user', 100, 3); select @m_merage_sql;
Parameter Description:
1. Table prefixes in the
target database 2. Maximum number of target database suffixes (total number of databases)
3. The number of digits in the target database
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_row<p_branch_size DO IF(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;