SQL - 快速的複製一個資料表(Table),並成為另一個資料表(Table)

摘要:SQL - 快速的複製一個資料表(Table),並成為另一個資料表(Table)

本篇的技巧不難,只是之前有一位老手忽然間問:「要如何在 MS SQL 以指令的方式,快速的將 A Table 的欄位及資料,成為 B Table !?」。好奇的我總是會多嘴問一下,主要是為了甚麼要這樣做呢!? 老手回:「因為現在 A Table 的資料是錯的,但我們也不確定客戶所提供的資料是否正確,若冒然的刪掉現有的資料,到時有問題要還原,還要有一些折騰。不如用這樣的方式來處理,縱使資料錯了,也比較好還原。」。其實聽完後,腦袋第一個想到的是 MS SQL 的 Import 與 Export 的方式也可能達到所要的需求,但作法上有些複雜,且也比較花時間,那不如就使用「Select ... Into...From」的方式,以下就來用一個範例來測試看看...

Code:

--從資料表中移除所有資料列,且不記錄個別資料列的刪除動作
TRUNCATE TABLE DBO.MYTABLE

--在 DBO.MYTABLE 資料表建立 5 筆資料
DECLARE @ICOUNT INT

SET @ICOUNT = 0

WHILE(@ICOUNT <= 5)
  BEGIN
 INSERT INTO DBO.MYTABLE([UID], FIRSTNAME, LASTNAME, CREATETIME)
 VALUES(NEWID(), 'DANNY ' + CONVERT(VARCHAR(1), @ICOUNT) , 'CHANG', GETDATE())
 
 SET @ICOUNT = @ICOUNT + 1
  END

--顯示 DBO.MYTABLE 的資料
SELECT * FROM DBO.MYTABLE ORDER BY FIRSTNAME ASC

--建立新的資料料表,其欄位與資料均為 DBO.MYTABLE 資料表
SELECT * INTO DBO.MYTABLE_1 FROM DBO.MYTABLE WHERE 1=1

SELECT * INTO DBO.MYTABLE_1 ORDER BY FIRSTNAME ASC

--若不需要資料的話,可以使用下面的語法
--SELECT * INTO DBO.MYTABLE_1 FROM DBO.MYTABLE WHERE 1=2

DROP TABLE DBO.MYTABLE_1

結果:


呆言呆語:
其實這個技巧不難,很多看倌都會,但當要使用到時,雄雄找不到,就...(呵呵!!!)
在文章中有講到 MS SQL 的 Import / Export,有機會在與各位分享一下...