我有一个要求,我需要在一些现有表的帮助下创建多个表,但新表会有一些不同的名称。
例如:
现有表名:
INT_Employees,
INT_HumanResource,
INT_Payroll,
INT_Contacts etc..
新表应该有STG前缀,所以它应该如下所示:
STG_Employees,
STG_HumanResource,
STG_Payroll,
STG_Contacts etc..
注意:大约有127个表,我们需要创建新的127个表,前缀为STG _。
先谢谢。
答案 0 :(得分:1)
如果您只是想复制表结构,可以使用select into和where谓词来阻止任何行返回。
select * into STG_Employees from INT_Employees where 1 = 0
请为每个表重复此操作。
- 编辑 -
以下是一个示例,您可以利用动态SQL来执行此任务,而不是诉诸循环。我们只是使用sys.tables来帮助我们生成sql语句。
declare @sql nvarchar(max) = ''
select @sql = @sql + 'select * into ' + stuff(name, 1, 4, 'STG_') + ' from ' + name + ' where 1 = 0;'
from sys.tables
where name like 'INT[_]%'
select @sql --once your comfortable the sql being generated is correct simply uncomment the next line
--exec sp_executesql @sql
请注意,如果您需要主键,索引,外键,计算列等,则需要以另一种方式生成这些脚本。这只会生成表结构。