Oracle 10g 데이터베이스에서 테이블 (~ 30,000 레코드)의 대량 업데이트가 필요합니다. 문제는 대상 행을 선택할 수있는 "where"절이 없다는 것입니다. 그러나 각 대상 행은 복합 키를 통해 식별 될 수 있습니다. 여기에서 잡아낸 것은 복합 키의 목록이 데이터베이스가 아닌 외부 소스에 있다는 것입니다.Oracle 데이터베이스 대량 업데이트를위한 최선의 방법
update table1 t set myfield='Updated' where t.comp_key1='12345' and t.comp_key2='98765';
이 있습니까 : 현재
나는 복합 키의 목록을 반복하고 기본적으로 다음과 같은 반복 update
문 단지 무리 인 PL/SQL의 절차를 뱉어 자바 프로그램이 이렇게하는 더 좋은 방법인가요? 아니면 우리가 ~ 30K 레코드 만 다루고 있다고 생각하면 충분합니까?
(('12345', '98765'), ('11111', '11111')의 '... 어디에서 t.comp_key1, t.comp_key2를 사용하여 한 번에 무리를 만들 수 있습니다. ('22222', '22222'))'. 업데이트 할 수있는 행 수는 명령문의 최대 길이 (Java 데이터 드라이버로 결정됨)에 따라 다르지만 명령문 당 100 개 이상의 행을 가져올 수 있어야합니다. 아름다운 것은 아니지만 왕복 여행을 많이 절약 할 수 있습니다. –
또는 데이터베이스 전체를 구문 분석하고 [테이블 함수] (http://blog.lishman.com/2008/05/oracle-table-functions.html)를 사용할 수 있습니다. – Ben