首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将整个SQL表复制到另一个表并截断原始表。

将整个SQL表复制到另一个表并截断原始表。
EN

Stack Overflow用户
提问于 2016-10-18 18:20:26
回答 2查看 3.1K关注 0票数 0

我正在编写一个存储过程,它将把一个名为"CS_Consolidation“的表的全部内容复制到一个名为"CS_ConsolidationBackup2016”的备份表中,所有字段都是完全相同的,每天都必须添加新的数据,然后必须截断原始表。

然而,我对我的程序和它是如何写的有问题,如果有人可以帮助:

代码语言:javascript
复制
CREATE PROCEDURE BackUpData2
AS
BEGIN
SET NOCOUNT ON;

SELECT *
INTO [dbo].[CS_ConsolidationBackUp]
FROM [dbo].[CS_Consolidation]

TRUNCATE TABLE [dbo].[CS_Consolidation]
GO
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-18 18:33:11

如果你想每天创建一个备份表,像这样的东西会起作用吗?

代码语言:javascript
复制
DECLARE @BackupTableName nvarchar(250)
SELECT @BackupTableName = 'CS_ConsolidationBackUp'  + CAST(CONVERT(date, getdate()) as varchar(250))
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @BackupTableName) 
BEGIN
    EXEC('DROP TABLE [' + @BackupTableName + ']')
END 
EXEC('SELECT * INTO [dbo].[' + @BackupTableName + '] FROM [dbo].[CS_Consolidation]')
TRUNCATE TABLE [dbo].[CS_Consolidation]
票数 1
EN

Stack Overflow用户

发布于 2016-10-18 19:05:31

为什么要复制数据,然后删除原始数据?这对你需要的系统来说完全是更复杂和更有压力的。没有必要创建数据的第二个副本,这样您就可以掉头并丢弃第一个副本。

一个更容易的路径是重命名为当前表,然后创建新的主表。

代码语言:javascript
复制
EXEC sp_rename 'CS_Consolidation', 'CS_ConsolidationBackUp';
GO
select * 
into CS_Consolidation
from CS_ConsolidationBackUp
where 1 = 0; --this ensures no rows but the entire structure is copied.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40115345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档