Mysql SQL重命名表命令

Mysql SQL重命名表命令,mysql,sql,rename,Mysql,Sql,Rename,我可以运行将表student重命名为student\u new ; 命令是相同的,易于遵循 在simple命令中是否有重命名许多表的方法。假设所有表都属于同一个DB名称 我不需要像下面这样写很多代码 RENAME TABLE pre_access TO pre_new_access; RENAME TABLE pre_activities TO pre_new_activities; RENAME TABLE pre_activityapplies TO pre_new_activityapp

我可以运行
将表student重命名为student\u new
;
命令是相同的,易于遵循

在simple命令中是否有重命名许多表的方法。假设所有表都属于同一个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。

您始终可以生成一个简单的PHP脚本,在数据库中循环,并根据正则表达式重命名它们。

假设您的评论使用MySQL,您应该能够从包含表列表的
信息模式.tables
中“选择”必要的语句

用您的模式名称替换
您的\u模式
,并在执行之前检查所选行

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;
...

您没有提到正在使用的数据库,这完全依赖于数据库(有些DBMS甚至不允许您重命名表)。但是,我不知道有哪一个DBMS系统允许在重命名命令中使用通配符,所以是的,您可能需要分别发送每个命令。

对于mysql数据库,“测试”应该可以工作:

echo "show tables"|mysql test|perl -ne 'if(/pre_(\w+)/){print "rename table pre_$1 to pre_new_$1;\n"}'|mysql test

您应该能够生成该脚本,但这取决于您使用的数据库…您可能希望添加一个事实,即您希望从SQL命令行运行此命令。您好,我使用的是PHPMyAdmin。我想在SQL脚本中使用SQL命令窗口。不是PHP scritp。我学了一点Perl。但我对SQL命令知之甚少。谢谢。好吧,仅仅通过phpMyAdmin,我认为你不会有太多的运气。如果可以使用Perl连接到数据库,并选择所有数据库,则可以更新这些数据库,以便在。