use your_database_name; SET foreign_key_checks = 0; SET unique_checks = 0; SELECT CONCAT("TRUNCATE TABLE ", table_name, ";") AS truncate_table FROM information_schema.tables WHERE table_schema = DATABASE(); SELECT CONCAT("INSERT INTO ", table_name, " (", GROUP_CONCAT(column_name), ") VALUES (", GROUP_CONCAT(REPLACE(column_name, column_name, "'new_value'")), ");") AS populate_table FROM information_schema.columns WHERE table_schema = DATABASE() GROUP BY table_name; SET foreign_key_checks = 1; SET unique_checks = 1;
以上代码包括三个步骤:
- 首先选择要操作的数据库,使用use命令。
- 禁用外键约束和唯一键约束,以允许插入相同值。
- 使用两个SELECT语句来分别生成TRUNCATE和INSERT语句,TRUNCATE语句用来清空表,INSERT语句用来插入新值。其中,GROUP_CONCAT函数用来将列名组合成一个字符串,REPLACE函数用来将所有的列名换成新值。
- 最后启用外键约束和唯一键约束,以确保数据完整性。