从tablename中选择* into customtablename

时间:2017-02-13 10:52:29

标签: sql sql-server sql-server-2012

我想将数据从一个表插入到另一个表中。我正在使用Select * into命令。但是,我的表名将动态生成,如下所示 -

DECLARE @Name VARCHAR(50) 

SET @Name = 'DimCategory'+CAST(GetDate() as Varchar(50)) 

select * into @Name from DimCategory  

这给了我错误

Msg 102, Level 15, State 1, Line 7 Incorrect syntax near 'DimCategory'.

即使以下声明也不起作用。

select * into 'DimCategory' + CAST(GetDate() as Varchar(50)) from DimCategory 

当我们使用

时,是否应该对表名进行硬编码
SELECT * INTO NEWTABLE_NAME FROM TABLE_NAME.

或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

我想,您使用的是Sql Server

您的代码需要动态SQL,如下所示:

DECLARE @Name VARCHAR(50) 
SET @Name = 'DimCategory'+CAST(GetDate() as Varchar(50)) 
DECLARE @sql = nvarchar(400)
SET @sql = N'select * into ' + QUOTENAME(@Name) + ' from DimCategory'
EXEC sp_executesql @sql