使所有列名称小写MySQL

时间:2015-11-11 03:36:14

标签: mysql

我继承了一个庞大的MySQL数据库。

它是一团糟:一半的列名是大写,其他是大写,另一小写。

我希望将它们标准化

我是否可以运行一个查询来更改每个查询,以便它们都是小写的?

3 个答案:

答案 0 :(得分:1)

尝试将所有表和列重命名为小写: -

SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CHANGE `', COLUMN_NAME, '` `',
LOWER(COLUMN_NAME), '` ', COLUMN_TYPE, ';')
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '{your schema name}'

答案 1 :(得分:1)

是。您将能够撰写一个查询 1.枚举数据库中的表。 2.枚举每个数据库的列。 3.如果列名不等于其名称的LCASE,请将其重命名为其名称的LCASE。

当您发布您尝试过的示例时,我可以更新此答案以提供更多帮助。

答案 2 :(得分:1)

this

SELECT CONCAT(
  'ALTER TABLE ', table_name, ' CHANGE ', column_name, ' ', 
   LOWER(column_name), ' ', column_type, ' ', extra,
CASE WHEN IS_NULLABLE = 'YES' THEN  ' NULL' ELSE ' NOT NULL' END, ';')   AS line
FROM information_schema.columns
WHERE table_schema = '<DBNAME>' 
AND data_type IN ('char', 'varchar','INT', 'TINYINT',  'datetime','text','double','decimal')
ORDER BY line;

它不太完美但足够接近。