SQL Server - 创建数据库表的副本并将其放在同一个数据库中?

时间:2013-03-15 08:55:38

标签: sql sql-server-2008 tsql sql-server-2008-r2

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

这适用于SQL Server 2008 R2。

7 个答案:

答案 0 :(得分:152)

使用SELECT ... INTO

SELECT *
INTO ABC_1
FROM ABC;

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

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


如果您不需要复制数据,只需要创建一个具有相同列结构的新空表,请添加一个带有伪表达式的WHERE子句:

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

答案 1 :(得分:12)

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

在SSMS中,在对象资源管理器中展开您的数据库,转到表格,右键单击您感兴趣的表格并选择脚本表格为创建新查询编辑器窗口。 查找并替换( CTRL + H )以更改表名称(即将ABC放入查找内容字段中替换为中的ABC_1,然后点击确定)。

通过T-SQL复制架构

显示如何通过SQL执行此操作的其他答案也运行良好,但与此方法的区别在于您还将获得任何索引,约束和触发器。

复制数据

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

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

答案 2 :(得分:3)

第一个选项

select *
  into ABC_1
  from ABC;

第二个选项:使用SSIS,右键单击对象资源管理器中的数据库&gt;所有任务&gt;导出数据

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

答案 3 :(得分:3)

如果您想要复制具有所有约束的表格&amp;密钥遵循以下步骤:

  1. 在SQL Management Studio中打开数据库。
  2. 右键单击要复制的表。
  3. 选择脚本表为 - &gt;创建到 - &gt;新查询编辑器窗口。 这将生成一个脚本,以在新的查询窗口中重新创建表。
  4. 更改表名和相关键&amp;脚本中的约束。
  5. 执行脚本。
  6. 然后复制数据运行以下脚本:

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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

使用sql server management studio或netcat,这将更容易操作sql

答案 6 :(得分:1)

这是另一种选择:

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