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_1
中replace为,然后单击确定 )。
通过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>
如果你想复制表中所有的约束和键按照以下步骤:
- 在SQL Management Studio中打开数据库。
- 右键单击要复制的表格。
- select脚本表作为 – >创build到 – >新查询编辑器窗口。 这将生成一个脚本来在新的查询窗口中重新创build表格。
- 更改脚本中的表名和相关键和约束。
- 执行脚本。
然后对于复制数据运行下面的脚本:
SET IDENTITY_INSERT DuplicateTable ON INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... ) SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable SET IDENTITY_INSERT DuplicateTable OFF