SQL - программно переименовать все столбцы таблицы в базе данных - PullRequest
0 голосов
/ 09 сентября 2011

Скажите, у меня есть таблица: UltimateTable. Имеет столбцы: UltimateColumn1, UltimateColumn2. Они должны быть переименованы

UltimateTable_UltimateColumn1
UltimateTable_UltimateColumn2

Я считаю, что могу перебирать таблицы с sp_MSForEachTable. Как я могу переименовать все таблицы в одной базе данных в соответствии с примером с T-SQL?

Я знаю, что многие люди не любят добавлять имена таблиц к именам столбцов, когда псевдоним подойдет. Преодолей это. Это стандарт компании.

(Дж / К, я тоже это ненавижу ...)

1 Ответ

3 голосов
/ 09 сентября 2011

Я согласен с Митчем, что это очень плохая идея, и вы должны бороться с ней до смерти. Тем не менее, существуют простые способы создания сценариев этого типа с использованием представлений каталога (, а не sp_MSForEachTable, который все равно возвращает только имена таблиц, а не имена столбцов, в любом случае).

Запустите это в одном окне:

SELECT 'EXEC sp_rename ''' + QUOTENAME(TABLE_SCHEMA) 
  + '.' + QUOTENAME(TABLE_NAME) + '.' 
  + QUOTENAME(COLUMN_NAME) + ''', ''' 
  + TABLE_NAME + '_' + COLUMN_NAME + ''', ''COLUMN'';'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME NOT LIKE TABLE_NAME + '[_]%';

Теперь скопируйте и вставьте вывод в новое окно. Проверьте его перед выполнением - и сначала проверьте его на тестовой базе данных!

...