2010-04-28 74 views
0

我想從表中獲取所有記錄1 &將它們插入到表2中。表1 &表2在不同的數據庫中,表1和表2是相同的結構。如何僅將所有記錄插入表中一次

通常,我將從table1中獲取所有記錄,對於每個記錄(foreach),我將通過使用「INSERT ...」將其插入到table2中。我想知道一種有效的方法,只需要一次將所有記錄插入到表中而無需使用foreach。

我使用C#,.NET 2.0 & WinForm。

謝謝。

回答

4

在SQL代碼中,你可以做一個SELECT的INSERT

INSERT INTO Table2 
(Id, Name, IsActive) 
SELECT Id, Name, IsActive 
FROM Table2 

或者,如果你在代碼中做,然後檢查出SqlBulkCopy CL屁股

  sqlConn.Open(); 
      using (var bulkCopy = new SqlBulkCopy(sqlConn)) 
      { 
       bulkCopy.DestinationTableName = "Table2"; 
       bulkCopy.WriteToServer(dataTable); 
      } 
      sqlConn.Close(); 
+0

「SQL代碼」 VS「碼」,咦? =)哦,+1, – 2010-04-28 04:52:24

+0

+1兩個解決方案,但你忘記了第一種情況下的身份字段。在插入之前需要切換身份(檢查David Hedlund解決方案)。 – 2010-04-28 05:00:04

+0

好點,但問題中沒有任何內容表明他/她在這些表上有身份列。 – willbt 2010-04-28 05:45:56

0

如果這兩個數據庫都在同一Microsoft SQL Server上託管,你可以做一個跨數據庫選擇在整個數據複製,而不需要太多的代碼在所有...

insert into database1.dbo.table1 
select * 
from database2.dbo.table2 

權限是有點棘手...

0

兩個數據庫可以和海誓山盟對話嗎?在這種情況下,忘記了C#,並創建一個查詢,看起來像這樣:

use db2 

SET IDENTITY_INSERT Table2 ON 

INSERT INTO Table2 
    SELECT * FROM db1.dbo.Table1 

SET IDENTITY_INSERT Table2 OFF 
相關問題