我继承了一个大型MySQL数据库。
它的混乱:一半的列名是大写,其他混合大写,其他小写。
我想把它们标准化
我是否可以运行一个查询来修改每个查询,使它们都是小写的?
发布于 2015-11-11 03:40:56
尝试将所有表和列重命名为小写:-
SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CHANGE `', COLUMN_NAME, '` `',
LOWER(COLUMN_NAME), '` ', COLUMN_TYPE, ';')
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '{your schema name}'发布于 2015-11-11 03:41:24
是。您将能够编写一个查询,该查询将1.枚举数据库中的表。2.枚举每个数据库的列。3.如果列名不等于其名称的小写,则将其重命名为名称的小写。
当你发布一个你尝试过的例子时,我可能会更新这个答案,这样会更有帮助。
发布于 2015-11-11 03:46:59
由这
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;它不是很完美,但足够接近。
https://stackoverflow.com/questions/33643858
复制相似问题