首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何迭代一个结果集并执行每个语句?(MySQL)

问我如何迭代一个结果集并执行每个语句?(MySQL)
EN

Stack Overflow用户
提问于 2015-11-25 22:57:41
回答 1查看 83关注 0票数 0

以下是我的查询:

代码语言:javascript
复制
SELECT CONCAT('ALTER TABLE `', TABLE_NAME,'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') AS mySQL
FROM INFORMATION_SCHEMA.TABLES;

我想从整个数据库中更改每个varchar和表中的字符集和排序规则,但是结果集非常大。我如何迭代这个查询并在SQL语言中执行每个结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-26 00:00:04

如果我这样做了,我将把这个SELECT语句的输出保存到一个文件类型为.sql的文件中。

然后,我将使用文本编辑器编辑.sql文件,以确保它包含我希望的内容。

然后,我将使用一个MySQL客户端程序来运行这个SQL文件。

注意到,查询编写的命令不起作用。您的查询为系统中的每个表编写一个命令。您可能希望对一个数据库中的表执行此操作。

代码语言:javascript
复制
SELECT CONCAT('ALTER TABLE `',
              TABLE_SCHEMA,
              '``',
              TABLE_NAME,
              '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') 
                     AS mySQL
  FROM INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA = DATABASE()
   AND TABLE_SCHEMA NOT IN ('INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA', 'MYSQL')

此查询将表名限定为数据库名。它还只选择当前数据库中的表。最后,它排除了三个系统数据库,因为尝试更改这些数据库中的表是一个非常糟糕的主意。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33927881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档