写一个mysql存储过程,实现将多张表的数据插入到同一张表
时间: 2024-05-28 10:09:00 浏览: 169
mysql 从一个表中查数据并插入另一个表实现方法
可以的,以下是一个示例的 MySQL 存储过程,可以实现将多张表的数据插入到同一张表:
DELIMITER $$
CREATE PROCEDURE insert_all_data() BEGIN
-- 这里是将要插入数据的目标表名
DECLARE target_table_name VARCHAR(255) DEFAULT 'my_target_table';
-- 这里是需要从中获取数据的源表名,可以根据需要添加或删除
DECLARE source_table_names CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE() AND table_name LIKE 'my_source_table_%';
-- 这里将指定的数据源绑定到 cursor 上
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @finished = TRUE;
-- 这里定义一些变量,用于存储取出数据时的行数据
DECLARE col1 VARCHAR(255);
DECLARE col2 INT;
DECLARE col3 DECIMAL(10,2);
-- 先删除目标表的所有数据
DELETE FROM `my_target_table`;
-- 开启一个循环,逐个遍历所有的源表
OPEN source_table_names;
repeat
SET @SQL = CONCAT('INSERT INTO', ' `', target_table_name, '`', '(col1, col2, col3) SELECT col1, col2, col3 FROM `', source_table_name, '`');
PREPARE stmt FROM @SQL;
EXECUTE stmt;
UNTIL @finished END repeat;
CLOSE source_table_names;
END $$
DELIMITER ;
请注意,上述代码只是示例,具体情况需要根据实际需求进行修改。同时,为了防止误操作,建议在执行存储过程之前先备份数据。
阅读全文