2010-04-28 3 views
0

테이블 1의 모든 레코드를 가져 오려고합니다. & 테이블 2에 레코드를 삽입하고 싶습니다. 표 1 & table2는 다른 데이터베이스에 있으며 table1과 table2는 같은 구조입니다.테이블에 모든 레코드를 한 번만 삽입하는 방법

일반적으로 table1의 모든 레코드를 가져오고 각 레코드 (foreach)에 대해 "INSERT ..."를 사용하여 table2에 삽입합니다. foreach없이 한 번만 테이블에 모든 레코드를 삽입하는 효과 방법을 알고 싶습니다.

나는 C#, .NET 2.0 & WinForm을 사용합니다.

감사합니다. 두 데이터베이스가 같은 마이크로 소프트 SQL 서버에서 호스팅하는 경우, 당신은 전혀 많은 코드를 필요로하지 않고 통해 데이터를 복사하려면 선택 데이터베이스 간을 할 수

답변

4

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 code'vs 'code', 안녕하세요? =) 오, 음, 2 개의 솔루션에 대해 +1 –

+0

+1이지만 첫 번째 경우에는 신원 정보 필드를 잊어 버렸습니다. 삽입하기 전에 신분을 바꾸는 것이 필요합니다 (David Hedlund 해결책을 확인하십시오). –

+0

좋은 지적이지만이 테이블에 ID 열이 있음을 나타내는 질문은 없습니다. – willbt

0

...

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

권한은 까다로운 비트입니다 당신이 코드에서하고 있다면 ... 당신은 INSERT에서 SELECT를 할 수있는 SQL 코드에서

0

두 데이터베이스가 서로 이야기 할 수 있습니까? 이 경우 C#을 잊어 버리고 다음과 같은 쿼리를 만듭니다.

use db2 

SET IDENTITY_INSERT Table2 ON 

INSERT INTO Table2 
    SELECT * FROM db1.dbo.Table1 

SET IDENTITY_INSERT Table2 OFF 
관련 문제