基于SQL Server中的临时表创建永久表

时间:2015-12-23 18:56:17

标签: sql-server sql-server-2008 tsql

我有一个临时表来聚合多个表中的列。

我想将此临时表转换为永久表,而不明确指定列名及其类型。

不知道我是否已经解释得这么好

1 个答案:

答案 0 :(得分:9)

您可以使用SELECT ... INTO

SELECT *
INTO dbo.normal_table
FROM #temp_table
-- WHERE 1 = 2;   --add if you only want table structure and not actual data

创建表格后要检查的事项:

  • IDENTITY列和当前值(可能需要重新播种)
  • DEFAULT列的值(如果临时表有默认值,普通表需要ALTER ed)
  • COLLATION tempdb可能具有与数据库不同的排序规则
  • 列的大小,精度和比例(VARCHARNVARCHARCHARDECIMAL ..)如果SELECT包含表达式

如果临时表不包含IDENTITY列,您可以使用以下方法添加:

SELECT ID  = IDENTITY(INT,1,1)
     ,col1 = NULL   -- NULL by default are treated as INT so you may need casting
     ,col2 = CAST(NULL AS DECIMAL(38,10))
     ,t.*
INTO dbo.table_name
FROM #temp t