2012-11-05 230 views
81

如何將數據從一個表複製/附加到SQL Server中具有相同模式的另一個表中?將數據複製到另一個表

編輯:

我的意思是說,在完成查詢

select * 
into table1 
from table2 
where 1=1 

它具有相同的架構和數據作爲table2創建table1

是否有像這樣的簡短查詢僅將整個數據複製到已存在的表中?

+0

如何解決這個問題? (INSERT INTO newTable(col1,col2,col3,col4)values ((SELECT column1,column2,column3 FROM oldTable where condition),'string');' – 2017-10-31 04:07:00

回答

190

如果兩個表是真正相同的模式:

INSERT INTO newTable 
SELECT * FROM oldTable 

否則,您必須指定列名(newTable列列表是可選的,如果您正在指定所有列的值並按與newTable的架構相同的順序選擇列):

INSERT INTO newTable (col1, col2, col3) 
SELECT column1, column2, column3 
FROM oldTable 
+0

如果我想爲某些列輸入'空白數據' ?? – BNN

+2

@coder它只是一個select子句,所以你可以隨意放置任何你想要的東西,包括明確的'NULL',字符串常量,表達式,甚至子查詢。 –

+0

只要新表應該已經存在。 –

7

試試這個:

INSERT INTO MyTable1 (Col1, Col2, Col4) 
    SELECT Col1, Col2, Col3 FROM MyTable2 
9

這是做正確的方法:

INSERT INTO destinationTable 
SELECT * FROM sourceTable 
+0

謝謝,這是我想要的方式,從一個表複製數據到另一個同一個表,但數據庫是differtent。非常感謝 – sushu

4

試試這個:

Insert Into table2 
Select * from table1 
8
INSERT INTO table1 (col1, col2, col3) 
SELECT column1, column2, column3 
FROM table2           
-5
select col1,col2,col3 into table2 
from table 1 
+1

它甚至不是一個正確的sql語句 – Liquidpie

2
INSERT INTO DestinationTable(SupplierName, Country) 
SELECT SupplierName, Country FROM SourceTable; 

不強制列名是相同的。

1

只是爲了獲得完整的信息,小心這個命令不要複製表的索引和觸發器! 參見以下職位副本的索引和觸發器腳本: Programmatically copy indexes from one table to another in SQL Server

+0

這真的是一個評論,而不是一個答案。有了更多的代表,[你將能夠發表評論](// stackoverflow.com/privileges/comment)。目前,我已經爲您添加了評論,並且我將此帖標記爲刪除。 – LaurentY

1

如果新表不存在簡單的方式,你想使舊錶的副本在SQL Server中的一切,然後以下工作。

SELECT * INTO NewTable FROM OldTable 
相關問題