Sql server 2008 如何使用SELECT INTO动态设置表名?

Sql server 2008 如何使用SELECT INTO动态设置表名?,sql-server-2008,Sql Server 2008,我正在从外部源批量插入员工数据。每次导入后,我都会在我的sp中截断load_employee表。在截断之前,我想做一个表备份,前一天的数据应该截断 如何给出自动递增表名(在SP中)?这并不能直接回答您的问题(但您可以使用动态SQL),但更好的解决方案可能是将备份日期放入列中,而不是每天创建一个表。这样,您就可以更轻松地查询存档数据多天,因为它们都在一个表中。大概是这样的: DROP TABLE Backup_LOAD_EMPLOYEE SELECT * INTO dbo.Backup_LOAD_

我正在从外部源批量插入员工数据。每次导入后,我都会在我的sp中截断load_employee表。在截断之前,我想做一个表备份,前一天的数据应该截断


如何给出自动递增表名(在SP中)?

这并不能直接回答您的问题(但您可以使用动态SQL),但更好的解决方案可能是将备份日期放入列中,而不是每天创建一个表。这样,您就可以更轻松地查询存档数据多天,因为它们都在一个表中。大概是这样的:

DROP TABLE Backup_LOAD_EMPLOYEE
SELECT * INTO dbo.Backup_LOAD_Employee FROM LOAD_Employee WHERE 1=1
TRUNCATE TABLE LOAD_Employee

谢谢你的信息。这背后的主要思想是将备份表保留一天,直到第二天它将被删除。由于its包含大量数据,我仍然会使用一列作为日期。很可能在某个时候您需要使用它,即使它只是用于开发/调试目的。
create table dbo.Backup_LOAD_Employee (
    BackupDate date,
    --- other columns
    )
go

insert into dbo.Backup_LOAD_Employee (BackupDate, ...)
select cast(getdate() as date), ... -- other columns
from dbo.LOAD_Employee

truncate table dbo.LOAD_Employee