我在数据库 DB 中有一个表 ABC。我想在同一个数据库中创建名称为 ABC_1、ABC_2、ABC_3 的 ABC 副本。如何使用 Management Studio(最好)或 SQL 查询来做到这一点?
这适用于 SQL Server 2008 R2。
我在数据库 DB 中有一个表 ABC。我想在同一个数据库中创建名称为 ABC_1、ABC_2、ABC_3 的 ABC 副本。如何使用 Management Studio(最好)或 SQL 查询来做到这一点?
这适用于 SQL Server 2008 R2。
使用SELECT ... INTO
:
SELECT *
INTO ABC_1
FROM ABC;
这将创建一个ABC_1
具有相同列结构ABC
并包含相同数据的新表。然而,约束(例如键、默认值)是不被复制的。
您可以使用不同的表名多次运行此查询。
如果不需要复制数据,只需新建一个具有相同列结构的空表,添加一个WHERE
带有 falsy 表达式的子句:
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
在 SSMS 中,在Object Explorer中展开您的数据库,转到Tables,右键单击您感兴趣的表,然后选择Script Table As,Create To,New Query Editor Window。执行查找和替换(CTRL + H)以更改表名(即放入ABC
Find What字段并ABC_1
在Replace With然后单击OK)。
显示如何通过 SQL 执行此操作的其他答案也可以很好地工作,但此方法的不同之处在于您还将获得任何索引、约束和触发器。
如果要包含数据,请在创建此表后运行以下脚本以从 ABC 复制所有数据(如果您有标识字段,请保持相同的 ID 值):
set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off
如果要复制具有所有约束和键的表,请按照以下步骤操作:
然后为了复制数据运行以下脚本:
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
第一个选项
select *
into ABC_1
from ABC;
第二个选项:使用SSIS,即右键单击对象资源管理器中的数据库>所有任务>导出数据
这是另一种选择:
select top 0 * into <new_table> from <original_table>
您需要编写 SSIS 来复制表及其数据、约束和触发器。我们在我们的组织中有一个名为 Kal Admin 的软件,由 kalrom Systems 提供,有免费版本可供下载(我认为复制表功能是可选的)
使用 sql server manegement studio 或 netcat 会更容易操作 sql
如果你想做 N 次(在现实世界中可能不实用),你可以试试这个:
declare @counter int
set @counter = 2
declare @tname NVARCHAR(100)
DECLARE @SQString NVARCHAR(MAX)
while(@counter <= 20) -- duplicate 20 times
begin
SET @tname= concat('Table_',@counter)
SET @SQString = 'select * into ' + @tname + ' from Table_1'
EXEC (@SQString)
set @counter = @counter + 1
End