SQL Server – 创build一个数据库表的副本,并将其放在同一个数据库?

我有一个数据库数据库中的表ABC。 我想在同一个数据库中创build名称为ABC_1,ABC_2,ABC_3的ABC副本。 我如何使用Management Studio(最好)或SQL查询来做到这一点?

这是针对SQL Server 2008 R2的。

使用SELECT ... INTO

 SELECT * INTO ABC_1 FROM ABC; 

这将创build一个新的表ABC_1 ,其具有与ABC相同的列结构并包含相同的数据。 但是,约束(例如,键,默认值)不会被复制。

您可以每次使用不同的表名称多次运行此查询。


如果不需要复制数据,只需要创build一个具有相同列结构的新的空表,就可以添加一个带有伪造expression式的WHERE子句:

 SELECT * INTO ABC_1 FROM ABC WHERE 1 <> 1; 

通过SSMS UI复制架构(生成DDL)

在SSMS中,在对象资源pipe理器中展开数据库,转到表格 ,右键单击您感兴趣的表格,然后select脚本表另存为创build到 新build查询编辑器窗口 。 做一个查找和replace( CTRL + H )来改变表名(例如,把ABC放在查找内容字段和ABC_1replace为,然后单击确定 )。

通过T-SQL复制架构

其他答案显示了如何通过SQL来完成这个工作也很好,但是与这个方法的区别在于你还可以得到任何索引,约束和触发器。

复制数据

如果要包含数据,创build此表后运行以下脚本以复制ABC中的所有数据(如果您有标识字段,请保留相同的ID值):

 set identity_insert ABC_1 off insert into ABC_1 select * from ABC set identity_insert ABC_1 on 

第一个选项

 select * into ABC_1 from ABC; 

第二个选项:使用SSIS,即右击对象资源pipe理器中的数据库>所有任务>导出数据

  • 来源和目标:您的数据库
  • 源表格:ABC
  • 目标表:ABC_1(将创build表)

您需要编写SSIS来复制表及其数据,约束和触发器。 我们在我们的组织中有一个名为Kal Admin的软件,由kalrom Systems提供,有一个免费的版本供下载(我认为复制表的function是可选的)

使用sql server manegement studio或netcat,这将更容易操纵SQL

这是另一个select:

 select top 0 * into <new_table> from <original_table> 

如果你想复制表中所有的约束和键按照以下步骤:

  1. 在SQL Management Studio中打开数据库。
  2. 右键单击要复制的表格。
  3. select脚本表作为 – >创build到 – >新查询编辑器窗口。 这将生成一个脚本来在新的查询窗口中重新创build表格。
  4. 更改脚本中的表名和相关键和约束。
  5. 执行脚本。

然后对于复制数据运行下面的脚本:

 SET IDENTITY_INSERT DuplicateTable ON INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... ) SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable SET IDENTITY_INSERT DuplicateTable OFF