为mysql数据库中的所有表重命名列

为mysql数据库中的所有表重命名列,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我需要重命名数据库中所有表的列。 我可以使用此查询获取列列表: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME= <Column Name>; 但我有以下错误: 您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在'@name VARCHAR(255)附近使用的正确语法 声明退出循环布尔值 在第3行声明“ta” 你能帮我解决这个问题吗?你可以试试这个 选择CONCAT( “更

我需要重命名数据库中所有表的列。 我可以使用此查询获取列列表:

 SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME= <Column Name>;
但我有以下错误: 您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在'@name VARCHAR(255)附近使用的正确语法

声明退出循环布尔值

在第3行声明“ta”

你能帮我解决这个问题吗?你可以试试这个

选择CONCAT(
“更改表格”,表格名称,
“重命名列”,列名称,
“新建”,列名称,
“;”)作为重命名脚本
从信息_SCHEMA.COLUMNS
其中TABLE_SCHEMA='your_db'

可能会导出架构。查找/替换列名。导入架构。有关类似的动态重命名示例,请参阅
ALTER TABLE <Table Name >RENAME COLUMN <Old name> to <New Name>;
DELIMITER $$
     DROP PROCEDURE IF EXISTS  renameColumn $$
     CREATE PROCEDURE renameColumn(IN oldName tinytext, IN newName tinytext)
     BEGIN
       DECLARE @name VARCHAR(255);
       DECLARE exit_loop BOOLEAN;         
       DECLARE tableName_cursor CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME=oldName;
       DECLARE CONTINUE HANDLER FOR NOT FOUND SET exit_loop = TRUE;
       OPEN tableName_cursor;
       rename_loop: LOOP
        FETCH  tableName_cursor @name;
        ALTER TABLE @name RENAME COLUMN oldName to newName;
         IF exit_loop THEN
             LEAVE rename_loop;
         END IF;
       END LOOP rename_loop;
     END $$
     DELIMITER;