使用单个命令修改数据库中的所有表

lig*_*evx 16 mysql alter-table character-set

是否有一个或一行命令来修改数据库中的所有表。我想在数据库中的每个表中发出此命令:

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;
Run Code Online (Sandbox Code Playgroud)

我的目标是将字符集从 latin1 修改为 utf8 到所有表。

更新: RDBMS 是 MySQL

Wor*_*DBA 20

不,没有这样的命令。但是您可以做的是编写一个快速查询来为您生成 SQL,如下所示:

USE INFORMATION_SCHEMA;
SELECT 
CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` CONVERT TO CHARACTER SET UTF8;") 
AS MySQLCMD FROM TABLES 
WHERE TABLE_SCHEMA = "your_schema_goes_here";
Run Code Online (Sandbox Code Playgroud)

然后你可以运行它的输出来做你需要的。

资料来源:

http://forums.mysql.com/read.php?20,244395,244421#msg-244421


Ken*_*her 2

如果您使用 MS SQL Server,则可以使用一个未记录的存储过程 ms_foreachtable。使用将表名替换为 ? 在声明中。

所以在你的例子中

EXEC ms_foreachtable 'ALTER TABLE [?] .....'
Run Code Online (Sandbox Code Playgroud)