我在数据库DB中有一个表ABC。我想在同一个DB中创建名为ABC_1,ABC_2,ABC_3的ABC副本。如何使用Management Studio(最好)或SQL查询来做到这一点?
这适用于SQL Server 2008 R2。
答案 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中,在对象资源管理器中展开您的数据库,转到表格,右键单击您感兴趣的表格并选择脚本表格为,创建,新查询编辑器窗口。
查找并替换( CTRL + H )以更改表名称(即将ABC
放入查找内容字段中替换为中的ABC_1
,然后点击确定)。
显示如何通过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;导出数据
答案 3 :(得分:3)
如果您想要复制具有所有约束的表格&amp;密钥遵循以下步骤:
然后复制数据运行以下脚本:
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>