2012-06-06 4 views
2

У меня есть большая группа таблиц базы данных, первоначально названных с префиксом «tblXYZ123-». Я все еще хочу, чтобы таблицы были префиксными, так как это связывает связанные таблицы, но я хочу переименовать эту группу таблиц, заменив префикс более простым и более подходящим префиксом типа «td».Как переименовать кучу таблиц с помощью шаблона?

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

ответ

2

Вы можете создать этот сценарий с помощью динамического SQL и представление каталога sys.tables:

DECLARE @sql NVARCHAR(MAX) = N''; 

SELECT @sql += CHAR(13) + CHAR(10) 
    + 'EXEC sp_rename N''' + SCHEMA_NAME([schema_id]) 
    + '.' + name + ''', N''' + REPLACE(name, 'tblXYZ123-', 'td') 
    + ''',N''OBJECT'';' 
FROM sys.tables 
WHERE name LIKE 'tblXYZ123-%'; 

PRINT @sql; 
-- EXEC sp_executesql @sql; 

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

DECLARE @t SYSNAME, @f NVARCHAR(511); 

DECLARE c CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY 
    FOR SELECT name, SCHEMA_NAME(schema_id) + '.' + name 
    FROM sys.tables WHERE name LIKE 'tblXYZ123-%'; 

OPEN c; 

FETCH NEXT FROM c INTO @t, @f; 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @t = REPLACE(@t, 'tblXYZ123-', 'td'); 

    EXEC sp_rename @f, @t, N'OBJECT'; 

    FETCH NEXT FROM c INTO @t, @f; 
END 

CLOSE c; 
DEALLOCATE c; 
0

Самый простой способ, на мой взгляд, состоит в том, чтобы поместить список таблиц в столбец Excel. В следующем столбце введите новое имя, предположительно, с формулой: = "td" & mid (A1, 11, 1000) для нового имени. В третьей колонке поместите формулу «sp_rename» & A1 & «» & A2.

Скопируйте формулы вниз, затем скопируйте третий столбец в SQL Server Management Studio и запустите код.

Вы также должны сделать это, используя курсор или цикл в T-SQL. Тем не менее, я считаю, что генерация такого кода в Excel - для одноразовых приложений - обычно является самым быстрым способом.

+0

Лично я нахожу запрос, который я разместил только немного сложнее, чем запрос, который вы должны выполнить, чтобы создать список для копирования в Excel. И он не использует явные петли или курсоры. –

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