2011-09-15 4 views
0

가능한 중복 : 여기
update one table with data from another하나의 테이블을 별도의 데이터베이스에있는 다른 테이블의 데이터로 업데이트하는 방법은 무엇입니까?

익스트림 SQL 멍청한 놈. 두 개의 데이터베이스 (Database1, Database2)가 있습니다. 각 db에는 동일한 테이블이 있습니다. Database1의 TableA에있는 데이터 (Database1, TableA -> Database2, TableA)로 Database2의 TableA를 업데이트하려고합니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+2

어떤 RDBMS를 사용하고 있습니까 (MS SQL, Oracle, MySQL)? 대상 테이블을 원본 테이블로 완전히 덮어 쓰시겠습니까? 새 행을 추가 하시겠습니까? –

+0

이것은 MS SQL에 있습니다. 기본적으로 대상 테이블에는 원본 테이블과 동일한 데이터가 많이 포함되어 있지만 소스 테이블에는 기존 행에 다른 값이 있거나 새 행이있을 수 있습니다. 대상 테이블이 원본 테이블과 일치하도록합니다. 대상 테이블에없는 경우 새 행을 삽입하고 기존 행을 업데이트해야 할 수도 있습니다. – Keith

+0

얼마나 자주 2 개의 테이블을 동기화해야합니까? 실시간으로 또는 무언가를 매일 찾고 있습니까? – Swoop

답변

2

이렇게하면 dbo 스키마를 사용한다고 가정합니다. 들어오는 데이터 이전을 덮어해야하거나 신원 필드를 사용하는 경우

insert into Database2.dbo.TableA (column1, column2, etc) 
select column1, column2, etc 
from Database1.dbo.TableA 

당신은 truncate Database2.dbo.TableA 첫째로 할 수 있습니다.

ID가 테이블 전체에서 동일해야하는 경우 스크립트를 실행하기 전에 Database2.dbo.Table에서 ID 속성을 비활성화하고 나중에 다시 활성화해야합니다.

1

일회성 데이터 동기화로이 작업을 수행하는 경우 SQL Server는 특정 데이터베이스를 마우스 오른쪽 단추로 클릭 할 때 작업 옵션에서 데이터 가져 오기/내보내기를 제공합니다. 데이터 원본 및 대상으로 사용할 SQL Server/데이터베이스/테이블을 선택한 다음 작업을 실행할 수 있습니다. 이 옵션을 설정하면 대상 테이블을 지우고 소스의 모든 데이터를 삽입하는 옵션을 설정할 수 있습니다.

이 영역에서 많은 일을 해본 적이 없지만 이러한 유형의 트랜잭션을 예약 된 시간에 실행되도록 예약 할 수도 있습니다.

+0

가져 오기/내보내기 방법을 시도했지만 복사 프로세스에서 실패했습니다. 오류 메시지는 매우 이해하기 어렵고별로 유용하지 않았습니다. 이 스크립트를 작성하는 방법이 있습니까? 위의 저스틴의 솔루션을 시도했지만 중복 키를 삽입하지 못했습니다. 난 그냥 새로운 행/키를 삽입하고 기존의 것들을 업데이 트하려는 경우 다를 수 있습니다. – Keith

+0

오류 메시지를 게시 할 수 있습니까? 먼저 대상 테이블에서 모든 레코드를 지우면 저스틴의 접근 방식을 사용할 수 있습니다. 중복 된 키는 피해야합니다. 귀하의 기록을 지우려면, 나는 더 효율적으로 나를 위해 일한 테이블을 절단 사용했습니다. – Swoop

+0

감사합니다. 나는 "잘린"시도하고 저스틴의 접근 방식을 시도해보십시오. – Keith

관련 문제