我可以运行RENAME TABLE student TO student_new
;
命令相同且易于理解。
是否有一种方法可以在简单命令中重命名很多表。假设所有表都属于同一个DB名称。
我不需要编写如下的大量代码?
RENAME TABLE pre_access TO pre_new_access;
RENAME TABLE pre_activities TO pre_new_activities;
RENAME TABLE pre_activityapplies TO pre_new_activityapplies;
RENAME TABLE pre_adminactions TO pre_new_adminactions;
RENAME TABLE pre_admincustom TO pre_new_admincustom;
RENAME TABLE pre_admingroups TO pre_new_admingroups;
RENAME TABLE pre_adminnotes TO pre_new_adminnotes;
...
(还有很多表需要重命名)
更新:使用MySQL。
答案 0 :(得分:5)
假设您的评论使用了MySQL,您应该能够从information_schema.tables
“选择”包含表格列表的必要语句。
将your_schema
替换为架构名称,并在执行前检查所选行。
Select Concat( 'RENAME TABLE ', table_name, ' TO ', 'new_', table_name, ';' )
From information_schema.tables
Where table_schema = 'your_schema';
返回
RENAME TABLE c_data TO new_c_data;
RENAME TABLE c_main TO new_c_main;
...
答案 1 :(得分:2)
您总是可以生成一个简单的PHP脚本,它循环遍历数据库并根据REGEX表达式重命名它们。
答案 2 :(得分:1)
您没有提到您正在使用的数据库,这完全取决于数据库(某些DBMS甚至不允许您重命名表)。但是,我不知道在RENAME命令中允许使用通配符的任何DBMS系统,所以是的,您可能必须单独发送每个命令。
答案 3 :(得分:0)
对于mysql数据库“test”应该有效:
echo "show tables"|mysql test|perl -ne 'if(/pre_(\w+)/){print "rename table pre_$1 to pre_new_$1;\n"}'|mysql test