我在mysql中非常业余。你能告诉我如何在单个查询中更改整个数据库的表前缀...我可以手动完成,但更改所有表前缀非常耗时。请帮帮我。就像isc_administrator_log到cus_administrator_log意味着isc_ to cus _
我找到了这两个解决方案,但不理解其中任何一个。
SELECT
GROUP_CONCAT('RENAME TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `',
TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`;' SEPARATOR ' ')
FROM `TABLES` WHERE `TABLE_SCHEMA` = "test";
和
SELECT
CONCAT('RENAME TABLE ', GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME,
'` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`')) AS q
FROM
`information_schema`.`Tables` WHERE TABLE_SCHEMA='test';
答案 0 :(得分:1)
两个语句都生成恰好是SQL语句的字符串,然后您可以在提示符处复制/粘贴以重命名表格。
只需用您需要的实际值替换以下两个字符串:
prefix_
:您要添加的前缀
'test'
:包含要重命名的表的数据库的名称
两个语句几乎完全相同,唯一的区别是第一个语句中没有明确提到information_schema
。因此,必须从information_schema
数据库(问题USE information_schema
之前)运行第一个语句。
答案 1 :(得分:0)
您可以对 MySQL 5.0.13 执行动态SQL查询
delimiter //
CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64))
BEGIN
SET @s = CONCAT('SELECT 'RENAME TABLE ',
GROUP_CONCAT('', TABLE_SCHEMA, ''
.'', TABLE_NAME,
'
TO ', TABLE_SCHEMA, ''='
.prefix_''', TABLE_NAME, '
')) AS q
FROM
information_schema
.Tables
WHERE TABLE_SCHEMA='test'';;'
PREPARE stmt FROM @s;
EXECUTE stmt;
END
//
delimiter ;
从here
获得参考答案 2 :(得分:0)
phpmyadmin:选择数据库; tab结构=>检查所有=> (使用选定列表)选择为表添加前缀。
(不是查询但有效)