我有一个临时表,该表聚集了多个表中的列。
我想将此临时表转换为永久表,而无需显式指定列名及其类型。
不知道我是否解释得足够好
您可以使用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
编辑普通表)COLLATION
tempdb的排序规则可能与您的数据库不同VARCHAR
,NVARCHAR
,CHAR
,DECIMAL
。。)如果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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句