如何从特定 MySQL 数据库中的每个 table 名称中删除前缀名称
How to remove a prefix name from every table name in specific MySQL database
特定MySQL
数据库中的所有表,例如my_db
,都以长度为17
个字符的前缀开头。我想从所有表的名称中删除前缀。我该怎么做?
我在 here 描述的语句中添加了 where table_schema = 'my_db'
以获取重命名 my_db
数据库中所有表的语句,而不是重命名 [=21] 中所有数据库的所有表=] 服务器实例:
select concat('RENAME TABLE ', concat(table_name, concat(' TO ', concat(substr(table_name, 18), ';')))) from information_schema.tables where table_schema = 'my_db';
注意前缀的长度是17
,我在substr
命令中使用了18
。
改进了 hasanghaforian 的回答...
删除了额外的 concat 函数.. 仍然产生相同的输出
select concat('RENAME TABLE ', table_name, ' TO ' , substr(table_name,18) , ' ; ' ) from information_schema.tables where table_schema = 'my_db';
特定MySQL
数据库中的所有表,例如my_db
,都以长度为17
个字符的前缀开头。我想从所有表的名称中删除前缀。我该怎么做?
我在 here 描述的语句中添加了 where table_schema = 'my_db'
以获取重命名 my_db
数据库中所有表的语句,而不是重命名 [=21] 中所有数据库的所有表=] 服务器实例:
select concat('RENAME TABLE ', concat(table_name, concat(' TO ', concat(substr(table_name, 18), ';')))) from information_schema.tables where table_schema = 'my_db';
注意前缀的长度是17
,我在substr
命令中使用了18
。
改进了 hasanghaforian 的回答... 删除了额外的 concat 函数.. 仍然产生相同的输出
select concat('RENAME TABLE ', table_name, ' TO ' , substr(table_name,18) , ' ; ' ) from information_schema.tables where table_schema = 'my_db';