동일한 테이블 레이아웃을 가진 두 개의 데이터베이스가 있습니다. 관심있는 표가 12 개 정도 있습니다. 그것들은 그들 사이의 수많은 FK입니다.oracle - 데이터를 동일한 데이터베이스로 이동
상위의 부모 테이블의 PK를 기반으로 데이터베이스 A에서 데이터베이스 B로 데이터를 복사하는 저장 프로 시저를 작성하라는 메시지가 표시되었습니다. 하나의 가치 또는 가치 목록 만받을 수 있습니다. 값과 일치하는 데이터베이스 A의 모든 레코드를 선택하고 데이터베이스 B에 삽입/업데이트해야합니다. 이는 하위 테이블의 모든 레코드도 포함합니다.
내 질문에 가장 좋은 (가장 효과적/모범 사례) 방법은 무엇입니까?
12 개 중에서 선택하십시오 ... insert into ... statements?
함께 테이블에 가입해야하나요? 동시에 모든 테이블에 삽입하려고합니까?
감사합니다.
추가 정보 : 레코드가 없으면 삽입해야합니다. (해당 테이블의 PK를 기준으로 함). 그렇지 않으면 업데이트해야합니다.
분명히 모든 하위 테이블로 이동해야하므로 상위 테이블에 복사 할 레코드가 하나만 있지만 하위 테이블에는 10이 있고 하위 테이블에는 500 개가있을 수 있습니다. 레코드가 이미 존재하는 경우 업데이트해야합니다. 하위 테이블에 대한 레코드가 없으면 삽입하십시오.
업데이트 : 최상위 레벨 키와 관련된 모든 레코드를 삭제하면 솔루션이 더 간단해질 것이라고 생각합니다. , 업데이트를 시도하는 대신 모든 새 레코드를 삽입하십시오. 공상은 하나의 SQL 문에서 모든 삽입을 할 조인의 좀 몇 가지를 할
delete from ... where ... in ...
select from ... where ... in ...
insert into...
하거나 더 나은 :
그래서 질문은 다스을하는 것이 최선의 추측?
일회성 운동이나 정기적 인 운동입니까? 어떤 버전의 데이터베이스입니까? 당신의 실패 단위는 무엇입니까? - 모든 기록 또는 단지 주어진 최고 수준의 PK? – APC
이것은 일반적인 프로세스입니다. 최상위 수준 PK에 오류가있는 경우 해당 PK를 다시 실행할 수 있습니다.레코드를 업데이트하는 대신 레코드를 모두 삭제 한 다음 삽입 만 할 수 있습니다. 솔루션을 간단하게 만들겠습니까? – kralco626