Изменение нескольких имен столбцов в таблице MySQL - PullRequest
2 голосов
/ 25 января 2012

У меня есть много столбцов в таблице с именем, начинающимся с field_t, и я должен изменить его на field_c

Например, вот инструкция ALTER TABLE для изменения имени одного из столбцов:

ALTER TABLE my_table CHANGE field_t_class field_c_class longtext;

Как я могу изменить все столбцы, которые следуют этому шаблону, вместо того, чтобы делать это один за другим?

Ответы [ 2 ]

5 голосов
/ 25 января 2012

Вы можете сгенерировать ALTER, как это

SELECT
    CONCAT(
           'ALTER TABLE ', C.TABLE_NAME, ' CHANGE ', 
           C.COLUMN_NAME, ' ', REPLACE(C.COLUMN_NAME, 'field_t', 'field_c')
           )
FROM
    INFORMATION_SCHEMA.COLUMNS C
WHERE
    C.COLUMN_NAME LIKE 'field[_]t[_]%';

Вам также нужно добавить DATA_TYPE и т. Д. И на основе этого CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION, NUMERIC_SCALE, CHARACTER_SET_NAME и COLLATION_NAME ... COLLATION_NAME ...

1 голос
/ 25 января 2012

Получите имена 1-го столбца, имеющие имя наподобие 'field_t%';

select C.COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS C            
WHERE
C.TABLE_NAME='YourTableName' AND C.COLUMN_NAME like 'field_t%';

Затем создайте строку переименования имен столбцов, например:

Создайте переименованную строку как:

rename_string= "RENAME COL1 to ReCol1
     RENAME COL2 to ReCol2"

Затем выполните:

ALTER Table YourTableName {rename_string};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...