сценарий MySQL для преобразования имен столбцов в нижний регистр

Насколько я знаю, классы Python используют словари для хранения их атрибутов так или иначе (это скрыто от программиста), таким образом, это смотрит на меня, что, что Вы сделали, существует, эффективно эмулируют класс Python... с помощью класса Python.

6
задан Rippo 23 October 2009 в 09:31
поделиться

2 ответа

Вы можете решить эту задачу, создав сценарий, начиная с вывода этого оператора:

SELECT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'dbname';
ORDER BY table_name

Подробности об этой функции можно найти здесь " MYSQL :: Таблица INFORMATION_SCHEMA COLUMNS "

Затем вы можете использовать функцию ALTER TABLE .. CHANGE, чтобы изменить имя столбца

, например,

ALTER TABLE mytable CHANGE old_name new_name varchar(5);

См. Также" MYSQL: : ALTER TABLE Syntax "

Разные типы данных имеют разные требования, поэтому вам нужны UNION:

SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||'('||CHAR(character_maximum_length)||');' AS Line
    FROM information_schema.columns
    WHERE table_schema = dbname and datatype in ( 'CHAR', 'VARCHAR' )
    ORDER BY table_name
    UNION
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||'('||CHAR(numeric_precision)||');' AS Line
    FROM information_schema.columns
    WHERE table_schema = dbname and datatype in ( 'INTEGER' )
    ORDER BY table_name
    UNION
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||'('||CHAR(numeric_precision)||','||CHAR(numeric_scale)|');' AS Line
    FROM information_schema.columns
    WHERE table_schema = dbname and datatype in ( 'FLOAT' )
    ORDER BY table_name
    UNION
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||');' AS Line
    FROM information_schema.columns
    WHERE table_schema = dbname and datatype in ( 'DATE' )
    ORDER BY table_name
2
ответ дан 8 December 2019 в 13:47
поделиться

На случай, если кто-то еще захочет, чтобы ниже был приведен пример завершенного запроса, проверьте, прежде чем использовать .....

ИЗМЕНИТЬ ЗАВЕРШЕННОЕ РЕШЕНИЕ ПО ЗАПРОСУ

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;

HTH кто-то в будущее... Представления BTW также написаны здесь, поэтому вам может потребоваться удалить их из окончательного кода SQL

6
ответ дан 8 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: