草稿整理后mysql兩個(gè)數(shù)據(jù)庫結(jié)構(gòu)對比
更新時(shí)間:2022年02月07日 10:36:41 作者:xiaostudy
這篇文章主要為大家詳細(xì)介紹了mysql兩個(gè)數(shù)據(jù)庫結(jié)構(gòu)對比結(jié)果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
1、草稿:
-- 1.將mysql分隔符從;設(shè)置為& DELIMITER & -- 2.如果存在存儲(chǔ)過程getdatabaseCount則刪除 DROP PROCEDURE IF EXISTS `getdatabaseCount` & -- 3.定義存儲(chǔ)過程,獲取特定數(shù)據(jù)庫的數(shù)量 -- (傳入?yún)?shù)database_name字符串類型,為數(shù)據(jù)庫名;傳出參數(shù)count_date整數(shù)類型,為數(shù)量) CREATE DEFINER=`root`@`localhost` PROCEDURE getdatabaseCount(IN database_name CHAR(20), OUT count_date INT) BEGIN -- 4.聲明變量 DECLARE $sqltext VARCHAR(1000); -- 5.動(dòng)態(tài)sql,把sql返回值放到@count_date中 SET $sqltext = CONCAT('SELECT COUNT(*) into @count_date FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\';'); SET @sqlcounts := $sqltext; -- 6.預(yù)編釋,stmt預(yù)編釋變量的名稱 PREPARE stmt FROM @sqlcounts; -- 7.執(zhí)行SQL語句 EXECUTE stmt; -- 8.釋放資源 DEALLOCATE PREPARE stmt; -- 9.獲取動(dòng)態(tài)SQL語句返回值 SET count_date = @count_date; END -- 10.定義存儲(chǔ)過程結(jié)束 & -- 2.如果存在存儲(chǔ)過程getCount則刪除 DROP PROCEDURE IF EXISTS `getTableCount` & -- 3.定義存儲(chǔ)過程,獲取特定數(shù)據(jù)庫表的數(shù)量 -- (傳入?yún)?shù)database_name字符串類型,為數(shù)據(jù)庫名;傳入?yún)?shù)table_name字符串類型,為表名;傳出參數(shù)count_date整數(shù)類型,為數(shù)量) CREATE DEFINER=`root`@`localhost` PROCEDURE getTableCount(IN database_name CHAR(20), IN table_name CHAR(200), OUT count_date INT) BEGIN -- 4.聲明變量 DECLARE $sqltext VARCHAR(1000); -- 5.動(dòng)態(tài)sql,把sql返回值放到@count_date中 SET $sqltext = CONCAT('SELECT COUNT(*) into @count_date FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\' and t.`TABLE_NAME` = \'', table_name, '\';'); SET @sqlcounts := $sqltext; -- 6.預(yù)編釋,stmt預(yù)編釋變量的名稱 PREPARE stmt FROM @sqlcounts; -- 7.執(zhí)行SQL語句 EXECUTE stmt; -- 8.釋放資源 DEALLOCATE PREPARE stmt; -- 9.獲取動(dòng)態(tài)SQL語句返回值 SET count_date = @count_date; END -- 10.定義存儲(chǔ)過程結(jié)束 & -- 2.如果存在存儲(chǔ)過程getColumnCount則刪除 DROP PROCEDURE IF EXISTS `getColumnCount` & -- 3.定義存儲(chǔ)過程,獲取特定數(shù)據(jù)庫表列的數(shù)量 -- (傳入?yún)?shù)database_name字符串類型,為數(shù)據(jù)庫名;傳入?yún)?shù)table_name字符串類型,為表名;傳入?yún)?shù)column_name字符串類型,為列名;傳出參數(shù)count_date整數(shù)類型,為數(shù)量) CREATE DEFINER=`root`@`localhost` PROCEDURE getColumnCount(IN database_name CHAR(20), IN table_name CHAR(200), IN column_name CHAR(200), OUT count_date INT) BEGIN -- 4.聲明變量 DECLARE $sqltext VARCHAR(1000); -- 5.動(dòng)態(tài)sql,把sql返回值放到@count_date中 SET $sqltext = CONCAT('SELECT COUNT(*) into @count_date FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\' and t.`TABLE_NAME` = \'', table_name, '\' and t.`COLUMN_NAME` = \'', column_name, '\';'); SET @sqlcounts := $sqltext; -- 6.預(yù)編釋,stmt預(yù)編釋變量的名稱 PREPARE stmt FROM @sqlcounts; -- 7.執(zhí)行SQL語句 EXECUTE stmt; -- 8.釋放資源 DEALLOCATE PREPARE stmt; -- 9.獲取動(dòng)態(tài)SQL語句返回值 SET count_date = @count_date; END -- 10.定義存儲(chǔ)過程結(jié)束 & -- 2.如果存在存儲(chǔ)過程getColumnInfo則刪除 DROP PROCEDURE IF EXISTS `getColumnInfo` & -- 3.定義存儲(chǔ)過程,獲取特定數(shù)據(jù)庫表列的信息 -- (傳入?yún)?shù)database_name字符串類型,為數(shù)據(jù)庫名;傳入?yún)?shù)table_name字符串類型,為表名;傳入?yún)?shù)column_name字符串類型,為列名;傳入?yún)?shù)column_info字符串類型,列信息;傳出參數(shù)result_data字符串類型,信息) CREATE DEFINER=`root`@`localhost` PROCEDURE getColumnInfo(IN database_name CHAR(20), IN table_name CHAR(200), IN column_name CHAR(200), IN column_info CHAR(50), OUT result_data CHAR(20)) BEGIN -- 4.聲明變量 DECLARE $sqltext VARCHAR(1000); -- 5.動(dòng)態(tài)sql,把sql返回值放到@count_date中 SET $sqltext = CONCAT('SELECT t.', column_info,' into @column_info FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\' and t.`TABLE_NAME` = \'', table_name, '\' and t.`COLUMN_NAME` = \'', column_name, '\';'); SET @sqlcounts := $sqltext; -- 6.預(yù)編釋,stmt預(yù)編釋變量的名稱 PREPARE stmt FROM @sqlcounts; -- 7.執(zhí)行SQL語句 EXECUTE stmt; -- 8.釋放資源 DEALLOCATE PREPARE stmt; -- 9.獲取動(dòng)態(tài)SQL語句返回值 SET result_data = @column_info; END -- 10.定義存儲(chǔ)過程結(jié)束 & -- 11.如果存在存儲(chǔ)過程comparison則刪除 DROP PROCEDURE IF EXISTS `comparison` & -- 12.定義存儲(chǔ)過程,獲取指定數(shù)據(jù)庫關(guān)鍵詞的表列名 -- (傳入?yún)?shù)database_n字符串類型,數(shù)據(jù)庫名;傳入?yún)?shù)collation_n字符串類型,具體編碼類型;傳入?yún)?shù)key_name字符串類型,為關(guān)鍵字;傳出參數(shù)tableColumnNames字符串類型,表列名) CREATE DEFINER=`root`@`localhost` PROCEDURE comparison(IN database_1 CHAR(20), IN database_2 CHAR(20), IN column_info CHAR(50), OUT info TEXT) BEGIN -- 13.聲明變量。database_name查詢出來的數(shù)據(jù)庫,table_name查詢出來的表名,column_name查詢出來的列名,collation_name查詢出來的具體編碼類型 DECLARE database_name, table_name, column_name, collation_name, result_data_1, result_data_2 CHAR(200); DECLARE this_info, database_table_no TEXT DEFAULT ''; DECLARE database_count_1, database_count_2, resoult_count INT DEFAULT 0; -- 14.定義游標(biāo)結(jié)束標(biāo)識(shí),默認(rèn)為0 DECLARE stopflag INT DEFAULT 0; -- 15.定義游標(biāo),其實(shí)就是臨時(shí)存儲(chǔ)sql返回的集合 DECLARE sql_resoult CURSOR FOR SELECT t.TABLE_SCHEMA, t.TABLE_NAME, t.COLUMN_NAME, t.COLLATION_NAME FROM information_schema.COLUMNS t; -- 16.游標(biāo)結(jié)束就設(shè)置為1 DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopflag=1; CALL getdatabaseCount(database_1, database_count_1); CALL getdatabaseCount(database_2, database_count_2); IF (database_count_1 <> 0 AND database_count_2 <> 0) THEN -- 17.打開游標(biāo) OPEN sql_resoult; -- 18.讀取游標(biāo)中數(shù)據(jù),存儲(chǔ)到指定變量 FETCH sql_resoult INTO database_name, table_name, column_name, collation_name; -- 19.沒有結(jié)束繼續(xù)往下走 WHILE (stopflag=0) DO BEGIN -- 20.判斷數(shù)據(jù)庫是否為輸入的數(shù)據(jù)庫名稱,和,指定具體編碼類型,和,不含. IF (database_name=database_1 AND INSTR(database_table_no, CONCAT(database_2, '_', table_name)) = 0) THEN -- 21.調(diào)用存儲(chǔ)過程,獲取特定表列關(guān)鍵詞的數(shù)量 CALL getTableCount(database_2, table_name, resoult_count); -- 22.如果數(shù)量不等于0,那么記錄表列名 IF (resoult_count <> 0) THEN CALL getColumnCount(database_2, table_name, column_name, resoult_count); -- 23.拼接字符串,不可直接用傳出變量設(shè)值 IF (resoult_count <> 0) THEN CALL getColumnInfo(database_1, table_name, column_name, column_info, result_data_1); CALL getColumnInfo(database_2, table_name, column_name, column_info, result_data_2); -- 23.拼接字符串,不可直接用傳出變量設(shè)值 IF (result_data_1 <> result_data_2) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); ELSE SET this_info=CONCAT(this_info, table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); END IF; END IF; ELSE IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_2, '的', table_name, '表的', column_name, '列不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_2, '的', table_name, '表的', column_name, '列不存在;\n'); END IF; END IF; ELSE IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_2, '的', table_name, '表不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_2, '的', table_name, '表不存在;\n'); END IF; SET database_table_no=CONCAT(database_table_no, ';', database_2, '_', table_name, ';'); END IF; ELSE IF (database_name=database_2 AND INSTR(database_table_no, CONCAT(database_1, '_', table_name)) = 0) THEN CALL getTableCount(database_1, table_name, resoult_count); IF (resoult_count <> 0) THEN CALL getColumnCount(database_1, table_name, column_name, resoult_count); IF (resoult_count = 0) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_1, '的', table_name, '表的', column_name, '列不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_1, '的', table_name, '表的', column_name, '列不存在;\n'); END IF; END IF; ELSE IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_1, '的', table_name, '表不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_1, '的', table_name, '表不存在;\n'); END IF; SET database_table_no=CONCAT(database_table_no, ';', database_1, '_', table_name, ';'); END IF; END IF; END IF; -- 24.讀取游標(biāo)中數(shù)據(jù),存儲(chǔ)到指定變量。(和18一樣) FETCH sql_resoult INTO database_name, table_name, column_name, collation_name; END; END WHILE; -- 25.關(guān)閉游標(biāo) CLOSE sql_resoult; ELSE IF (database_count_1 = 0 AND database_count_2 = 0) THEN SET this_info = CONCAT(database_1, '和', database_2, '數(shù)據(jù)庫不存在或?yàn)榭諗?shù)據(jù)庫'); ELSE IF (database_count_1 = 0) THEN SET this_info = CONCAT(database_1, '數(shù)據(jù)庫不存在或?yàn)榭諗?shù)據(jù)庫'); ELSE SET this_info = CONCAT(database_2, '數(shù)據(jù)庫不存在或?yàn)榭諗?shù)據(jù)庫'); END IF; END IF; END IF; -- 26.把數(shù)據(jù)放到傳出參數(shù) SET info=this_info; END -- 27.定義存儲(chǔ)過程結(jié)束 & -- 28.將mysql分隔符從&設(shè)置為; DELIMITER ; -- 29.設(shè)置變量 SET @database_1='my_test'; SET @database_2='my_test2'; SET @column_info='data_type'; SET @count=''; -- 30.調(diào)用存儲(chǔ)過程 CALL comparison(@database_1, @database_2, @column_info, @count); -- 31.打印 SELECT @count; -- 32.如果存在存儲(chǔ)過程則刪除 DROP PROCEDURE IF EXISTS `comparison`;
2、整理:
-- 1.將mysql分隔符從;設(shè)置為& DELIMITER & -- 2.如果存在存儲(chǔ)過程getdatabaseCount則刪除 DROP PROCEDURE IF EXISTS `getdatabaseCount` & -- 3.定義存儲(chǔ)過程,獲取特定數(shù)據(jù)庫的數(shù)量 -- (傳入?yún)?shù)database_name字符串類型,為數(shù)據(jù)庫名;傳出參數(shù)count_date整數(shù)類型,為數(shù)量) CREATE DEFINER=`root`@`localhost` PROCEDURE getdatabaseCount(IN database_name CHAR(20), OUT count_date INT) BEGIN -- 4.聲明變量 DECLARE $sqltext VARCHAR(1000); -- 5.動(dòng)態(tài)sql,把sql返回值放到@count_date中 SET $sqltext = CONCAT('SELECT COUNT(*) into @count_date FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\';'); SET @sqlcounts := $sqltext; -- 6.預(yù)編釋,stmt預(yù)編釋變量的名稱 PREPARE stmt FROM @sqlcounts; -- 7.執(zhí)行SQL語句 EXECUTE stmt; -- 8.釋放資源 DEALLOCATE PREPARE stmt; -- 9.獲取動(dòng)態(tài)SQL語句返回值 SET count_date = @count_date; END -- 10.定義存儲(chǔ)過程結(jié)束 & -- 11.如果存在存儲(chǔ)過程getTableCount則刪除 DROP PROCEDURE IF EXISTS `getTableCount` & -- 12.定義存儲(chǔ)過程,獲取特定數(shù)據(jù)庫表的數(shù)量 -- (傳入?yún)?shù)database_name字符串類型,為數(shù)據(jù)庫名;傳入?yún)?shù)table_name字符串類型,為表名;傳出參數(shù)count_date整數(shù)類型,為數(shù)量) CREATE DEFINER=`root`@`localhost` PROCEDURE getTableCount(IN database_name CHAR(20), IN table_name CHAR(200), OUT count_date INT) BEGIN -- 13.聲明變量 DECLARE $sqltext VARCHAR(1000); -- 14.動(dòng)態(tài)sql,把sql返回值放到@count_date中 SET $sqltext = CONCAT('SELECT COUNT(*) into @count_date FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\' and t.`TABLE_NAME` = \'', table_name, '\';'); SET @sqlcounts := $sqltext; -- 15.預(yù)編釋,stmt預(yù)編釋變量的名稱 PREPARE stmt FROM @sqlcounts; -- 16.執(zhí)行SQL語句 EXECUTE stmt; -- 17.釋放資源 DEALLOCATE PREPARE stmt; -- 18.獲取動(dòng)態(tài)SQL語句返回值 SET count_date = @count_date; END -- 19.定義存儲(chǔ)過程結(jié)束 & -- 20.如果存在存儲(chǔ)過程getColumnCount則刪除 DROP PROCEDURE IF EXISTS `getColumnCount` & -- 21.定義存儲(chǔ)過程,獲取特定數(shù)據(jù)庫表列的數(shù)量 -- (傳入?yún)?shù)database_name字符串類型,為數(shù)據(jù)庫名;傳入?yún)?shù)table_name字符串類型,為表名;傳入?yún)?shù)column_name字符串類型,為列名;傳出參數(shù)count_date整數(shù)類型,為數(shù)量) CREATE DEFINER=`root`@`localhost` PROCEDURE getColumnCount(IN database_name CHAR(20), IN table_name CHAR(200), IN column_name CHAR(200), OUT count_date INT) BEGIN -- 22.聲明變量 DECLARE $sqltext VARCHAR(1000); -- 23.動(dòng)態(tài)sql,把sql返回值放到@count_date中 SET $sqltext = CONCAT('SELECT COUNT(*) into @count_date FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\' and t.`TABLE_NAME` = \'', table_name, '\' and t.`COLUMN_NAME` = \'', column_name, '\';'); SET @sqlcounts := $sqltext; -- 24.預(yù)編釋,stmt預(yù)編釋變量的名稱 PREPARE stmt FROM @sqlcounts; -- 25.執(zhí)行SQL語句 EXECUTE stmt; -- 26.釋放資源 DEALLOCATE PREPARE stmt; -- 27.獲取動(dòng)態(tài)SQL語句返回值 SET count_date = @count_date; END -- 28.定義存儲(chǔ)過程結(jié)束 & -- 29.如果存在存儲(chǔ)過程getColumnInfo則刪除 DROP PROCEDURE IF EXISTS `getColumnInfo` & -- 30.定義存儲(chǔ)過程,獲取特定數(shù)據(jù)庫表列的信息 -- (傳入?yún)?shù)database_name字符串類型,為數(shù)據(jù)庫名;傳入?yún)?shù)table_name字符串類型,為表名;傳入?yún)?shù)column_name字符串類型,為列名;傳入?yún)?shù)column_info字符串類型,列信息;傳出參數(shù)result_data字符串類型,信息) CREATE DEFINER=`root`@`localhost` PROCEDURE getColumnInfo(IN database_name CHAR(20), IN table_name CHAR(200), IN column_name CHAR(200), IN column_info CHAR(50), OUT result_data CHAR(20)) BEGIN -- 31.聲明變量 DECLARE $sqltext VARCHAR(1000); -- 32.動(dòng)態(tài)sql,把sql返回值放到@count_date中 SET $sqltext = CONCAT('SELECT t.', column_info,' into @column_info FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\' and t.`TABLE_NAME` = \'', table_name, '\' and t.`COLUMN_NAME` = \'', column_name, '\';'); SET @sqlcounts := $sqltext; -- 33.預(yù)編釋,stmt預(yù)編釋變量的名稱 PREPARE stmt FROM @sqlcounts; -- 34.執(zhí)行SQL語句 EXECUTE stmt; -- 35.釋放資源 DEALLOCATE PREPARE stmt; -- 36.獲取動(dòng)態(tài)SQL語句返回值 SET result_data = @column_info; END -- 37.定義存儲(chǔ)過程結(jié)束 & -- 38.如果存在存儲(chǔ)過程comparisonTableExist則刪除 DROP PROCEDURE IF EXISTS `comparisonTableExist` & -- 39.定義存儲(chǔ)過程,對比表是否存在 -- (傳入?yún)?shù)database_1字符串類型,數(shù)據(jù)庫名1;傳入?yún)?shù)database_2字符串類型,數(shù)據(jù)庫名2;傳入?yún)?shù)info字符串類型,庫表信息) CREATE DEFINER=`root`@`localhost` PROCEDURE comparisonTableExist(IN database_1 CHAR(20), IN database_2 CHAR(20), OUT info MEDIUMTEXT) BEGIN -- 40.聲明變量。database_name查詢出來的數(shù)據(jù)庫,table_name查詢出來的表名 DECLARE database_name, table_name CHAR(200); -- this_info表不存在的記錄,database_table_no表不存在的記錄跳過重復(fù)查詢 DECLARE this_info, database_table_no MEDIUMTEXT DEFAULT ''; -- database_count_1統(tǒng)計(jì)數(shù)據(jù)庫1存在的數(shù)量,database_count_2統(tǒng)計(jì)數(shù)據(jù)庫2存在的數(shù)量,resoult_count統(tǒng)計(jì)表存在的數(shù)量。如果為0表示不存在 DECLARE database_count_1, database_count_2, resoult_count INT DEFAULT 0; -- 41.定義游標(biāo)結(jié)束標(biāo)識(shí),默認(rèn)為0 DECLARE stopflag INT DEFAULT 0; -- 42.定義游標(biāo),其實(shí)就是臨時(shí)存儲(chǔ)sql返回的集合 DECLARE sql_resoult CURSOR FOR SELECT t.TABLE_SCHEMA, t.TABLE_NAME FROM information_schema.COLUMNS t; -- 43.游標(biāo)結(jié)束就設(shè)置為1 DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopflag=1; -- 44.調(diào)用存儲(chǔ)過程getdatabaseCount,查看兩個(gè)數(shù)據(jù)庫是否存在,都存在則繼續(xù) CALL getdatabaseCount(database_1, database_count_1); CALL getdatabaseCount(database_2, database_count_2); IF (database_count_1 <> 0 AND database_count_2 <> 0) THEN -- 45.打開游標(biāo) OPEN sql_resoult; -- 46.讀取游標(biāo)中數(shù)據(jù),存儲(chǔ)到指定變量 FETCH sql_resoult INTO database_name, table_name; -- 47.沒有結(jié)束繼續(xù)往下走 WHILE (stopflag=0) DO BEGIN -- 48.判斷數(shù)據(jù)庫是否為輸入的數(shù)據(jù)庫名稱1,去除已經(jīng)比較過數(shù)據(jù)庫2的表不存在 IF (database_name=database_1 AND INSTR(database_table_no, CONCAT(database_2, '_', table_name)) = 0) THEN -- 49.調(diào)用存儲(chǔ)過程getTableCount,查看表是否存在 CALL getTableCount(database_2, table_name, resoult_count); -- 50.如果數(shù)量等于0,那么表不存在 IF (resoult_count = 0) THEN -- 51.把不存在的表記錄下來 IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_2, '的', table_name, '表不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_2, '的', table_name, '表不存在;\n'); END IF; SET database_table_no=CONCAT(database_table_no, ';', database_2, '_', table_name, ';'); END IF; ELSE -- 52.判斷數(shù)據(jù)庫是否為輸入的數(shù)據(jù)庫名稱2,去除已經(jīng)比較過數(shù)據(jù)庫1的表不存在 IF (database_name=database_2 AND INSTR(database_table_no, CONCAT(database_1, '_', table_name)) = 0) THEN CALL getTableCount(database_1, table_name, resoult_count); IF (resoult_count = 0) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_1, '的', table_name, '表不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_1, '的', table_name, '表不存在;\n'); END IF; SET database_table_no=CONCAT(database_table_no, ';', database_1, '_', table_name, ';'); END IF; END IF; END IF; -- 53.讀取游標(biāo)中數(shù)據(jù),存儲(chǔ)到指定變量。(和46一樣) FETCH sql_resoult INTO database_name, table_name; END; END WHILE; -- 54.關(guān)閉游標(biāo) CLOSE sql_resoult; ELSE IF (database_count_1 = 0 AND database_count_2 = 0) THEN SET this_info = CONCAT(database_1, '和', database_2, '數(shù)據(jù)庫不存在或?yàn)榭諗?shù)據(jù)庫'); ELSE IF (database_count_1 = 0) THEN SET this_info = CONCAT(database_1, '數(shù)據(jù)庫不存在或?yàn)榭諗?shù)據(jù)庫'); ELSE SET this_info = CONCAT(database_2, '數(shù)據(jù)庫不存在或?yàn)榭諗?shù)據(jù)庫'); END IF; END IF; END IF; -- 55.把數(shù)據(jù)放到傳出參數(shù) SET info=this_info; END -- 56.定義存儲(chǔ)過程結(jié)束 & -- 57.如果存在存儲(chǔ)過程comparisonColumnExist則刪除 DROP PROCEDURE IF EXISTS `comparisonColumnExist` & -- 58.定義存儲(chǔ)過程,對比列是否存在 -- (傳入?yún)?shù)database_1字符串類型,數(shù)據(jù)庫名1;傳入?yún)?shù)database_2字符串類型,數(shù)據(jù)庫名2;傳入?yún)?shù)info字符串類型,庫表信息) CREATE DEFINER=`root`@`localhost` PROCEDURE comparisonColumnExist(IN database_1 CHAR(20), IN database_2 CHAR(20), OUT info MEDIUMTEXT) BEGIN -- 59.聲明變量。database_name查詢出來的數(shù)據(jù)庫,table_name查詢出來的表名,column_name查詢出來的列名 DECLARE database_name, table_name, column_name CHAR(200); -- this_info表不存在的記錄,database_table_no表不存在的記錄跳過重復(fù)查詢 DECLARE this_info, database_table_no TEXT DEFAULT ''; -- database_count_1統(tǒng)計(jì)數(shù)據(jù)庫1存在的數(shù)量,database_count_2統(tǒng)計(jì)數(shù)據(jù)庫2存在的數(shù)量,resoult_count統(tǒng)計(jì)表存在的數(shù)量。如果為0表示不存在 DECLARE database_count_1, database_count_2, resoult_count INT DEFAULT 0; -- 60.定義游標(biāo)結(jié)束標(biāo)識(shí),默認(rèn)為0 DECLARE stopflag INT DEFAULT 0; -- 61.定義游標(biāo),其實(shí)就是臨時(shí)存儲(chǔ)sql返回的集合 DECLARE sql_resoult CURSOR FOR SELECT t.TABLE_SCHEMA, t.TABLE_NAME, t.COLUMN_NAME FROM information_schema.COLUMNS t; -- 62.游標(biāo)結(jié)束就設(shè)置為1 DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopflag=1; -- 63.調(diào)用存儲(chǔ)過程getdatabaseCount,查看兩個(gè)數(shù)據(jù)庫是否存在,都存在則繼續(xù)(同44) CALL getdatabaseCount(database_1, database_count_1); CALL getdatabaseCount(database_2, database_count_2); IF (database_count_1 <> 0 AND database_count_2 <> 0) THEN -- 64.打開游標(biāo) OPEN sql_resoult; -- 65.讀取游標(biāo)中數(shù)據(jù),存儲(chǔ)到指定變量 FETCH sql_resoult INTO database_name, table_name, column_name; -- 66.沒有結(jié)束繼續(xù)往下走 WHILE (stopflag=0) DO BEGIN -- 67.判斷數(shù)據(jù)庫是否為輸入的數(shù)據(jù)庫名稱1,去除已經(jīng)比較過數(shù)據(jù)庫2的表不存在(同48) IF (database_name=database_1 AND INSTR(database_table_no, CONCAT(database_2, '_', table_name)) = 0) THEN -- 68.調(diào)用存儲(chǔ)過程getTableCount,查看表是否存在(同49) CALL getTableCount(database_2, table_name, resoult_count); -- 69.如果數(shù)量不等于0,則繼續(xù) IF (resoult_count <> 0) THEN -- 70.調(diào)用存儲(chǔ)過程getColumnCount,查看列是否存在。為0說明不存在 CALL getColumnCount(database_2, table_name, column_name, resoult_count); IF (resoult_count = 0) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_2, '的', table_name, '表的', column_name, '列不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_2, '的', table_name, '表的', column_name, '列不存在;\n'); END IF; END IF; ELSE SET database_table_no=CONCAT(database_table_no, ';', database_2, '_', table_name, ';'); END IF; ELSE -- 71.判斷數(shù)據(jù)庫是否為輸入的數(shù)據(jù)庫名稱2,去除已經(jīng)比較過數(shù)據(jù)庫1的表不存在(同52) IF (database_name=database_2 AND INSTR(database_table_no, CONCAT(database_1, '_', table_name)) = 0) THEN CALL getTableCount(database_1, table_name, resoult_count); IF (resoult_count <> 0) THEN CALL getColumnCount(database_1, table_name, column_name, resoult_count); IF (resoult_count = 0) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_1, '的', table_name, '表的', column_name, '列不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_1, '的', table_name, '表的', column_name, '列不存在;\n'); END IF; END IF; ELSE SET database_table_no=CONCAT(database_table_no, ';', database_1, '_', table_name, ';'); END IF; END IF; END IF; -- 72.讀取游標(biāo)中數(shù)據(jù),存儲(chǔ)到指定變量。(和65一樣) FETCH sql_resoult INTO database_name, table_name, column_name; END; END WHILE; -- 73.關(guān)閉游標(biāo) CLOSE sql_resoult; END IF; -- 74.把數(shù)據(jù)放到傳出參數(shù) SET info=this_info; END -- 75.定義存儲(chǔ)過程結(jié)束 & -- 76.如果存在存儲(chǔ)過程comparisonColumnInfo則刪除 DROP PROCEDURE IF EXISTS `comparisonColumnInfo` & -- 77.定義存儲(chǔ)過程,對比列的不同 -- (傳入?yún)?shù)database_1字符串類型,數(shù)據(jù)庫名1;傳入?yún)?shù)database_2字符串類型,數(shù)據(jù)庫名2;傳入?yún)?shù)info字符串類型,庫表信息) CREATE DEFINER=`root`@`localhost` PROCEDURE comparisonColumnInfo(IN database_1 CHAR(20), IN database_2 CHAR(20),OUT info MEDIUMTEXT) BEGIN -- 78.聲明變量。database_name查詢出來的數(shù)據(jù)庫,table_name查詢出來的表名,column_name查詢出來的列名,collation_name查詢出來的具體編碼類型 -- result_data_1數(shù)據(jù)庫1的列信息,result_data_2數(shù)據(jù)庫2的列信息,column_info對比的列(現(xiàn)在只比較DATA_TYPE、CHARACTER_SET_NAME) DECLARE database_name, table_name, column_name, collation_name, result_data_1, result_data_2, column_info CHAR(200); -- this_info表不存在的記錄,database_table_no表不存在的記錄跳過重復(fù)查詢 DECLARE this_info, database_table_no MEDIUMTEXT DEFAULT ''; -- database_count_1統(tǒng)計(jì)數(shù)據(jù)庫1存在的數(shù)量,database_count_2統(tǒng)計(jì)數(shù)據(jù)庫2存在的數(shù)量,resoult_count統(tǒng)計(jì)表存在的數(shù)量。如果為0表示不存在 DECLARE database_count_1, database_count_2, resoult_count INT DEFAULT 0; -- 79.定義游標(biāo)結(jié)束標(biāo)識(shí),默認(rèn)為0 DECLARE stopflag INT DEFAULT 0; -- 80.定義游標(biāo),其實(shí)就是臨時(shí)存儲(chǔ)sql返回的集合 DECLARE sql_resoult CURSOR FOR SELECT t.TABLE_SCHEMA, t.TABLE_NAME, t.COLUMN_NAME, t.COLLATION_NAME FROM information_schema.COLUMNS t; -- 81.游標(biāo)結(jié)束就設(shè)置為1 DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopflag=1; -- 82.調(diào)用存儲(chǔ)過程getdatabaseCount,查看兩個(gè)數(shù)據(jù)庫是否存在,都存在則繼續(xù)(同63) CALL getdatabaseCount(database_1, database_count_1); CALL getdatabaseCount(database_2, database_count_2); IF (database_count_1 <> 0 AND database_count_2 <> 0) THEN -- 83.打開游標(biāo) OPEN sql_resoult; -- 84.讀取游標(biāo)中數(shù)據(jù),存儲(chǔ)到指定變量 FETCH sql_resoult INTO database_name, table_name, column_name, collation_name; -- 85.沒有結(jié)束繼續(xù)往下走 WHILE (stopflag=0) DO BEGIN -- 86.判斷數(shù)據(jù)庫是否為輸入的數(shù)據(jù)庫名稱1,去除已經(jīng)比較過數(shù)據(jù)庫2的表不存在(同67) IF (database_name=database_1 AND INSTR(database_table_no, CONCAT(database_2, '_', table_name)) = 0) THEN -- 87.調(diào)用存儲(chǔ)過程getTableCount,查看表是否存在(同68) CALL getTableCount(database_2, table_name, resoult_count); -- 88.如果數(shù)量不等于0,則繼續(xù) IF (resoult_count <> 0) THEN -- 89.調(diào)用存儲(chǔ)過程getColumnCount,查看列是否存在。為0說明不存在(同70) CALL getColumnCount(database_2, table_name, column_name, resoult_count); IF (resoult_count <> 0) THEN -- 90.對比DATA_TYPE是否相同 SET column_info = 'DATA_TYPE'; CALL getColumnInfo(database_1, table_name, column_name, column_info, result_data_1); CALL getColumnInfo(database_2, table_name, column_name, column_info, result_data_2); IF (result_data_1 <> result_data_2) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); ELSE SET this_info=CONCAT(this_info, table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); END IF; END IF; -- 91.對比CHARACTER_SET_NAME是否相同 SET column_info = 'CHARACTER_SET_NAME'; CALL getColumnInfo(database_1, table_name, column_name, column_info, result_data_1); CALL getColumnInfo(database_2, table_name, column_name, column_info, result_data_2); IF (result_data_1 <> result_data_2) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); ELSE SET this_info=CONCAT(this_info, table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); END IF; END IF; END IF; ELSE SET database_table_no=CONCAT(database_table_no, ';', database_2, '_', table_name, ';'); END IF; ELSE IF (database_name=database_2 AND INSTR(database_table_no, CONCAT(database_1, '_', table_name)) = 0) THEN CALL getTableCount(database_1, table_name, resoult_count); IF (resoult_count = 0) THEN SET database_table_no=CONCAT(database_table_no, ';', database_1, '_', table_name, ';'); END IF; END IF; END IF; -- 92.讀取游標(biāo)中數(shù)據(jù),存儲(chǔ)到指定變量。(和84一樣) FETCH sql_resoult INTO database_name, table_name, column_name, collation_name; END; END WHILE; -- 93.關(guān)閉游標(biāo) CLOSE sql_resoult; END IF; -- 94.把數(shù)據(jù)放到傳出參數(shù) SET info=this_info; END -- 95.定義存儲(chǔ)過程結(jié)束 & -- 96.將mysql分隔符從&設(shè)置為; DELIMITER ; -- 97.設(shè)置變量 SET @database_1='my_test1'; SET @database_2='my_test2'; SET @tableExistInfo=''; SET @columnExistInfo=''; SET @columnInfo=''; -- 98.調(diào)用存儲(chǔ)過程 CALL comparisonTableExist(@database_1, @database_2, @tableExistInfo); CALL comparisonColumnExist(@database_1, @database_2, @columnExistInfo); CALL comparisonColumnInfo(@database_1, @database_2, @columnInfo); SET @info=CONCAT(@tableExistInfo, '\n', @columnExistInfo, '\n', @columnInfo); -- 99.打印 SELECT @info; -- 100.如果存在存儲(chǔ)過程則刪除 DROP PROCEDURE IF EXISTS `comparisonColumnInfo`; DROP PROCEDURE IF EXISTS `comparisonColumnExist`; DROP PROCEDURE IF EXISTS `comparisonTableExist`; DROP PROCEDURE IF EXISTS `getColumnInfo`; DROP PROCEDURE IF EXISTS `getColumnCount`; DROP PROCEDURE IF EXISTS `getTableCount`; DROP PROCEDURE IF EXISTS `getdatabaseCount`;
3、無注釋
DELIMITER & DROP PROCEDURE IF EXISTS `getdatabaseCount` & CREATE DEFINER=`root`@`localhost` PROCEDURE getdatabaseCount(IN database_name CHAR(20), OUT count_date INT) BEGIN DECLARE $sqltext VARCHAR(1000); SET $sqltext = CONCAT('SELECT COUNT(*) into @count_date FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\';'); SET @sqlcounts := $sqltext; PREPARE stmt FROM @sqlcounts; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET count_date = @count_date; END & DROP PROCEDURE IF EXISTS `getTableCount` & CREATE DEFINER=`root`@`localhost` PROCEDURE getTableCount(IN database_name CHAR(20), IN table_name CHAR(200), OUT count_date INT) BEGIN DECLARE $sqltext VARCHAR(1000); SET $sqltext = CONCAT('SELECT COUNT(*) into @count_date FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\' and t.`TABLE_NAME` = \'', table_name, '\';'); SET @sqlcounts := $sqltext; PREPARE stmt FROM @sqlcounts; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET count_date = @count_date; END & DROP PROCEDURE IF EXISTS `getColumnCount` & CREATE DEFINER=`root`@`localhost` PROCEDURE getColumnCount(IN database_name CHAR(20), IN table_name CHAR(200), IN column_name CHAR(200), OUT count_date INT) BEGIN DECLARE $sqltext VARCHAR(1000); SET $sqltext = CONCAT('SELECT COUNT(*) into @count_date FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\' and t.`TABLE_NAME` = \'', table_name, '\' and t.`COLUMN_NAME` = \'', column_name, '\';'); SET @sqlcounts := $sqltext; PREPARE stmt FROM @sqlcounts; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET count_date = @count_date; END & DROP PROCEDURE IF EXISTS `getColumnInfo` & CREATE DEFINER=`root`@`localhost` PROCEDURE getColumnInfo(IN database_name CHAR(20), IN table_name CHAR(200), IN column_name CHAR(200), IN column_info CHAR(50), OUT result_data CHAR(20)) BEGIN DECLARE $sqltext VARCHAR(1000); SET $sqltext = CONCAT('SELECT t.', column_info,' into @column_info FROM information_schema.COLUMNS t where t.`TABLE_SCHEMA` = \'', database_name, '\' and t.`TABLE_NAME` = \'', table_name, '\' and t.`COLUMN_NAME` = \'', column_name, '\';'); SET @sqlcounts := $sqltext; PREPARE stmt FROM @sqlcounts; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET result_data = @column_info; END & DROP PROCEDURE IF EXISTS `comparisonTableExist` & CREATE DEFINER=`root`@`localhost` PROCEDURE comparisonTableExist(IN database_1 CHAR(20), IN database_2 CHAR(20), OUT info MEDIUMTEXT) BEGIN DECLARE database_name, table_name CHAR(200); DECLARE this_info, database_table_no MEDIUMTEXT DEFAULT ''; DECLARE database_count_1, database_count_2, resoult_count INT DEFAULT 0; DECLARE stopflag INT DEFAULT 0; DECLARE sql_resoult CURSOR FOR SELECT t.TABLE_SCHEMA, t.TABLE_NAME FROM information_schema.COLUMNS t; DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopflag=1; CALL getdatabaseCount(database_1, database_count_1); CALL getdatabaseCount(database_2, database_count_2); IF (database_count_1 <> 0 AND database_count_2 <> 0) THEN OPEN sql_resoult; FETCH sql_resoult INTO database_name, table_name; WHILE (stopflag=0) DO BEGIN IF (database_name=database_1 AND INSTR(database_table_no, CONCAT(database_2, '_', table_name)) = 0) THEN CALL getTableCount(database_2, table_name, resoult_count); IF (resoult_count = 0) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_2, '的', table_name, '表不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_2, '的', table_name, '表不存在;\n'); END IF; SET database_table_no=CONCAT(database_table_no, ';', database_2, '_', table_name, ';'); END IF; ELSE IF (database_name=database_2 AND INSTR(database_table_no, CONCAT(database_1, '_', table_name)) = 0) THEN CALL getTableCount(database_1, table_name, resoult_count); IF (resoult_count = 0) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_1, '的', table_name, '表不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_1, '的', table_name, '表不存在;\n'); END IF; SET database_table_no=CONCAT(database_table_no, ';', database_1, '_', table_name, ';'); END IF; END IF; END IF; FETCH sql_resoult INTO database_name, table_name; END; END WHILE; CLOSE sql_resoult; ELSE IF (database_count_1 = 0 AND database_count_2 = 0) THEN SET this_info = CONCAT(database_1, '和', database_2, '數(shù)據(jù)庫不存在或?yàn)榭諗?shù)據(jù)庫'); ELSE IF (database_count_1 = 0) THEN SET this_info = CONCAT(database_1, '數(shù)據(jù)庫不存在或?yàn)榭諗?shù)據(jù)庫'); ELSE SET this_info = CONCAT(database_2, '數(shù)據(jù)庫不存在或?yàn)榭諗?shù)據(jù)庫'); END IF; END IF; END IF; SET info=this_info; END & DROP PROCEDURE IF EXISTS `comparisonColumnExist` & CREATE DEFINER=`root`@`localhost` PROCEDURE comparisonColumnExist(IN database_1 CHAR(20), IN database_2 CHAR(20), OUT info MEDIUMTEXT) BEGIN DECLARE database_name, table_name, column_name CHAR(200); DECLARE this_info, database_table_no TEXT DEFAULT ''; DECLARE database_count_1, database_count_2, resoult_count INT DEFAULT 0; DECLARE stopflag INT DEFAULT 0; DECLARE sql_resoult CURSOR FOR SELECT t.TABLE_SCHEMA, t.TABLE_NAME, t.COLUMN_NAME FROM information_schema.COLUMNS t; DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopflag=1; CALL getdatabaseCount(database_1, database_count_1); CALL getdatabaseCount(database_2, database_count_2); IF (database_count_1 <> 0 AND database_count_2 <> 0) THEN OPEN sql_resoult; FETCH sql_resoult INTO database_name, table_name, column_name; WHILE (stopflag=0) DO BEGIN IF (database_name=database_1 AND INSTR(database_table_no, CONCAT(database_2, '_', table_name)) = 0) THEN CALL getTableCount(database_2, table_name, resoult_count); IF (resoult_count <> 0) THEN CALL getColumnCount(database_2, table_name, column_name, resoult_count); IF (resoult_count = 0) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_2, '的', table_name, '表的', column_name, '列不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_2, '的', table_name, '表的', column_name, '列不存在;\n'); END IF; END IF; ELSE SET database_table_no=CONCAT(database_table_no, ';', database_2, '_', table_name, ';'); END IF; ELSE IF (database_name=database_2 AND INSTR(database_table_no, CONCAT(database_1, '_', table_name)) = 0) THEN CALL getTableCount(database_1, table_name, resoult_count); IF (resoult_count <> 0) THEN CALL getColumnCount(database_1, table_name, column_name, resoult_count); IF (resoult_count = 0) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(database_1, '的', table_name, '表的', column_name, '列不存在;\n'); ELSE SET this_info=CONCAT(this_info, database_1, '的', table_name, '表的', column_name, '列不存在;\n'); END IF; END IF; ELSE SET database_table_no=CONCAT(database_table_no, ';', database_1, '_', table_name, ';'); END IF; END IF; END IF; FETCH sql_resoult INTO database_name, table_name, column_name; END; END WHILE; CLOSE sql_resoult; END IF; SET info=this_info; END & DROP PROCEDURE IF EXISTS `comparisonColumnInfo` & CREATE DEFINER=`root`@`localhost` PROCEDURE comparisonColumnInfo(IN database_1 CHAR(20), IN database_2 CHAR(20),OUT info MEDIUMTEXT) BEGIN DECLARE database_name, table_name, column_name, collation_name, result_data_1, result_data_2, column_info CHAR(200); DECLARE this_info, database_table_no MEDIUMTEXT DEFAULT ''; DECLARE database_count_1, database_count_2, resoult_count INT DEFAULT 0; DECLARE stopflag INT DEFAULT 0; DECLARE sql_resoult CURSOR FOR SELECT t.TABLE_SCHEMA, t.TABLE_NAME, t.COLUMN_NAME, t.COLLATION_NAME FROM information_schema.COLUMNS t; DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopflag=1; CALL getdatabaseCount(database_1, database_count_1); CALL getdatabaseCount(database_2, database_count_2); IF (database_count_1 <> 0 AND database_count_2 <> 0) THEN OPEN sql_resoult; FETCH sql_resoult INTO database_name, table_name, column_name, collation_name; WHILE (stopflag=0) DO BEGIN IF (database_name=database_1 AND INSTR(database_table_no, CONCAT(database_2, '_', table_name)) = 0) THEN CALL getTableCount(database_2, table_name, resoult_count); IF (resoult_count <> 0) THEN CALL getColumnCount(database_2, table_name, column_name, resoult_count); IF (resoult_count <> 0) THEN SET column_info = 'DATA_TYPE'; CALL getColumnInfo(database_1, table_name, column_name, column_info, result_data_1); CALL getColumnInfo(database_2, table_name, column_name, column_info, result_data_2); IF (result_data_1 <> result_data_2) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); ELSE SET this_info=CONCAT(this_info, table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); END IF; END IF; SET column_info = 'CHARACTER_SET_NAME'; CALL getColumnInfo(database_1, table_name, column_name, column_info, result_data_1); CALL getColumnInfo(database_2, table_name, column_name, column_info, result_data_2); IF (result_data_1 <> result_data_2) THEN IF (this_info IS NULL OR this_info='') THEN SET this_info=CONCAT(table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); ELSE SET this_info=CONCAT(this_info, table_name, '表的', column_name, '列的', column_info, '不一樣;\n'); END IF; END IF; END IF; ELSE SET database_table_no=CONCAT(database_table_no, ';', database_2, '_', table_name, ';'); END IF; ELSE IF (database_name=database_2 AND INSTR(database_table_no, CONCAT(database_1, '_', table_name)) = 0) THEN CALL getTableCount(database_1, table_name, resoult_count); IF (resoult_count = 0) THEN SET database_table_no=CONCAT(database_table_no, ';', database_1, '_', table_name, ';'); END IF; END IF; END IF; FETCH sql_resoult INTO database_name, table_name, column_name, collation_name; END; END WHILE; CLOSE sql_resoult; END IF; SET info=this_info; END & DELIMITER ; SET @database_1='my_test3'; SET @database_2='my_test4'; SET @tableExistInfo=''; SET @columnExistInfo=''; SET @columnInfo=''; CALL comparisonTableExist(@database_1, @database_2, @tableExistInfo); CALL comparisonColumnExist(@database_1, @database_2, @columnExistInfo); CALL comparisonColumnInfo(@database_1, @database_2, @columnInfo); SET @info=CONCAT(@tableExistInfo, '\n', @columnExistInfo, '\n', @columnInfo); SELECT @info; DROP PROCEDURE IF EXISTS `comparisonColumnInfo`; DROP PROCEDURE IF EXISTS `comparisonColumnExist`; DROP PROCEDURE IF EXISTS `comparisonTableExist`; DROP PROCEDURE IF EXISTS `getColumnInfo`; DROP PROCEDURE IF EXISTS `getColumnCount`; DROP PROCEDURE IF EXISTS `getTableCount`; DROP PROCEDURE IF EXISTS `getdatabaseCount`;
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
使用Linux的Shell腳本定時(shí)處理MySQL超時(shí)
本文提供使用Linux的Shell腳本定時(shí)處理MySQL超時(shí)Locked進(jìn)程腳本2013-11-11mysql5.7.19 winx64安裝配置方法圖文教程(win10)
這篇文章主要為大家詳細(xì)介紹了mysql5.7.19 winx64安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07