重命名数据库中的所有表

Jas*_*son 6 sql-server sql-server-2005

我有一个数据库,其中所有表都以一组相同的字符作为前缀.这样做是因为有一次他们在一个共享数据库中为宠物项目设置了数百个其他表.现在,应用程序以及数据库已准备好从该阶段移出,并准备好自己运行.我想删除每个表的前缀.有没有更简单的方法来执行此操作而不是单击右键并重命名每个表?

Jas*_*son 9

select 'exec sp_rename @objname=' + name + ', @newname=' + replace(name ,'prefixedchars', '')
from sysObjects
where type = 'U'
Run Code Online (Sandbox Code Playgroud)

结果将是这样的:

exec sp_rename @objname=prefixedcharsTable1, @newname=Table1
exec sp_rename @objname=prefixedcharsTable2, @newname=Table2
exec sp_rename @objname=prefixedcharsTable3, @newname=Table3
etc... for each table in your db
Run Code Online (Sandbox Code Playgroud)

您所要做的就是将这些语句复制到新的查询窗口并运行.

注意事项:

  • 您将收到如下警告消息: Caution: Changing any part of an object name could break scripts and stored procedures.
  • 您必须在任何存储过程,函数,视图和触发器中重命名表.


Bra*_*tch 2

您可以执行诸如编写整个数据库的脚本并在脚本上进行字符串替换之类的操作,在新数据库上运行它,然后导入数据。这当然取决于您对要替换的字符串的匹配程度。您可能还必须在您的应用程序中进行相应的更改。您始终可以在测试数据库上尝试类似的操作,看看它是否有效。

也看看这个 -表和存储过程的批量重命名

一种方法有一定的成本,另一种方法与我的建议类似。