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


13

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

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;

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

更新: RDBMS是MySQL

Answers:


18

不,没有这样的命令。但是您可以做的是编写一个快速查询来为您生成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";

然后,您可以运行此输出以执行所需的操作。

资料来源:

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


没有,没有一种方法可以在单个命令中执行所需的操作。
布朗斯通先生

为了使它在MariaDB下工作,出于某种原因,我不得不WHERE TABLE_SCHEMA = "your_schema_goes_here"将命令置之不理。
Gwyneth Llewelyn

2

最简单的方法:导出数据库。在文本编辑器中打开导出的数据库,并使用“ UTF8”或其他命令执行查找/替换。重新导入修改后的数据库。


1
为什么这是最简单的方法?如果您无法降低数据库来修改字符集怎么办?
dezso

因为它不需要SQL知识。显然,如果无法导出数据库,则简便,此方法将是无关紧要的。但是,如果您有足够的特权直接编辑数据库,则很有可能也可以将其导出。
安德鲁·史密斯

这是我的最佳解决方案!快速修复非常方便。由于某种原因,当我开始在数据库中出现“非法归类”错误时,我正在本地工作。+1。
evl183 '18 -10-22

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.