SQL RENAME TABLE命令

时间:2010-04-15 13:05:55

标签: mysql sql rename

我可以运行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。

4 个答案:

答案 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