IT Share you

임시 테이블의 구조 (예 : SQL 스크립트 생성) 가져 오기 및 현재 인스턴스에 대한 임시 테이블 지우기

shareyou 2021. 1. 6. 08:09
반응형

임시 테이블의 구조 (예 : SQL 스크립트 생성) 가져 오기 및 현재 인스턴스에 대한 임시 테이블 지우기


임시 테이블의 구조를 얻은 다음 임시 테이블을 삭제하는 방법은 무엇입니까? 임시 테이블에 대한 sp_helptext가 있습니까? 마지막으로 동일한 세션 또는 쿼리 창에서 임시 테이블을 삭제할 수 있습니까?

예:

select *
into #myTempTable  -- creates a new temp table
from tMyTable  -- some table in your database

tempdb..sp_help #myTempTable

참조 .


임시 테이블 이름 주위에 따옴표를 사용해야하며을 사용한 직후 임시 테이블을 삭제할 수 있습니다 drop table ....

select *
into #myTempTable  -- creates a new temp table
from tMyTable  -- some table in your database

exec tempdb..sp_help '#myTempTable'

drop table #myTempTable

내가 아는 한 테이블에 대한 SP_HelpText가 없습니다. 이 시도:

Select * From tempdb.sys.columns Where object_id=OBJECT_ID('tempdb.dbo.#myTempTable');

스크립트에서 임시 테이블을 다시 만들 수 있어야했기 때문에이 코드를 사용하여 CREATE TABLE 문의 열 부분을 생성했습니다.

SELECT char(9) + '[' + c.column_name + '] ' + c.data_type 
   + CASE WHEN c.data_type IN ('decimal')
      THEN isnull('(' + convert(varchar, c.numeric_precision) + ', ' + convert(varchar, c.numeric_scale) + ')', '') 
      ELSE '' END
   + CASE WHEN c.IS_NULLABLE = 'YES' THEN ' NULL' ELSE '' END
   + ','
From tempdb.INFORMATION_SCHEMA.COLUMNS c 
WHERE TABLE_NAME LIKE '#myTempTable%' 

모든 SQL 데이터 유형을 테스트하지는 않았지만 이것은 int, float, datetime, money 및 bit에서 작동했습니다.

또한 -ApexSQL Complete (무료)에는 그리드 결과를 Insert Into으로 내보낼 수있는 멋진 기능이 있습니다 . 이 생성 된 임시 테이블을 스크립트에로드하는 데 사용했습니다.ApexSQL 복사 결과를 Insert into 문으로


exec sp_columns table_name;

exec sp_columns 직원;


Select * From tempdb.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '#yourtemp%'

그래서 이것은 나를 도왔습니다. 테이블 열을 만들었습니다.

Select Column_Name + ' [' + DATA_TYPE + ']' + 
case when Data_Type in ('numeric', 'varchar', 'char')
    then '(' +
        case
            when DATA_TYPE = 'numeric' then CAST(numeric_precision as varchar(3)) + ',' + CAST(numeric_scale as varchar(3))
            when DATA_TYPE = 'varchar' then CAST(CHARACTER_MAXIMUM_LENGTH as varchar(3))
            when DATA_TYPE = 'char' then CAST(CHARACTER_MAXIMUM_LENGTH as varchar(3))
        end
         + ')'
    else ''
end
+ ','
, * 
From tempdb.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME LIKE '#MEHTEMPTABLE%'

내가해야 할 일은이 항목을 테이블 선언에 복사하는 것뿐이었습니다.

Declare @MyTable Table
(
--All columns here
)

내 문제가 해결되었을 것이지만 시간이 촉박했습니다.

참조 URL : https://stackoverflow.com/questions/8976414/get-structure-of-temp-table-like-generate-sql-script-and-clear-temp-table-for

반응형