2011-03-16 135 views
2

有沒有一種快速簡便的方法來複制SQL-Server中的表?我只想從表A創建一個臨時表,因爲我需要刷新表B(這會干擾外鍵)。SQL-Server中的重複表定義(列)

我知道這不是一個荒謬的任務手動,但它似乎應該有一個很好的方式來做到這一點。

編輯:澄清,我想複製表定義,而不是實際的數據。

回答

1

豈不是一個更好的辦法,只是暫時禁用約束,而你正在做你刷新

ALTER TABLE X NOCHECK CONSTRAINT ALL 
-- Refresh SQL 
ALTER TABLE X CHECK CONSTRAINT ALL 
+0

我想到了這個簡單的問題,但是讓我有點緊張,以至於實際上混淆了真實數據庫的定義,實際上,如果您只是禁用約束,那就相當不錯。我沒有意識到這一點。 – jtpereyda 2011-03-16 16:40:09

+0

就我個人而言,我覺得這種方法最不麻煩。 – 2011-03-16 16:42:14

+0

這實際上是對我的情況最好的。這很簡單,也感覺更安全,因爲我實際上並沒有移動任何數據或刪除/截斷任何東西。 – jtpereyda 2011-03-16 16:58:34

1
INSERT INTO TableB 
(SELECT * FROM TableA) 
+0

這將複製數據到現有的表B來自TableA。 OP正在尋找的是複製表格的* definition *。 – 2011-03-16 17:36:54

6

試試這個嗎?

SELECT 
    * 
INTO 
    #temp 
FROM 
    myTable 
WHERE 
    1=0 

它不會重複約束,索引等,但它應該複製數據類型和字段名稱。

+0

如果我可以問,Where 1 = 0是什麼?它似乎沒有它的工作。 – jtpereyda 2011-03-16 16:41:01

+0

應該保留複製到其中的數據,這正是您希望通過編輯 – DKnight 2011-03-16 16:42:00

+0

正確的,您說你不想複製表格內容。 1永遠不等於0,所以沒有記錄會通過。但是#temp表仍然會以所需的定義創建。 – MatBailie 2011-03-16 16:47:33

0

SELECT *成copyTable從sourceTable會