2012-01-25 3 views
2

У меня есть много столбцов в таблице с именем, начиная с field_t, и я должен изменить, что field_cИзменение нескольких имен столбцов в таблице тузд

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

ALTER TABLE my_table CHANGE field_t_class field_c_class longtext; 

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

ответ

4

Вы можете сгенерировали исказит как этот

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 ...

1

Get Имена 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_string= "RENAME COL1 to ReCol1 
    RENAME COL2 to ReCol2" 

Затем сделайте:

ALTER Table YourTableName {rename_string}; 
+0

Я не могу видеть поддержку этого в ALTER ТАБЛИЦА http://dev.mysql.com/doc/refman/5.5/en/alter-table.html Однако, если он работает, он чище, чем мой, потому что тип данных и т. Д. Не является необходимо – gbn

+1

@gbn: Да, сэр, он работает. Я тестировал раньше на машине, тогда сам я написал ответ. –

Смежные вопросы