-
XML을 파싱해서 DB에 저장하는 업무를 하게 되었는데, 저장할 DB가 알티베이스였다.
처음 들어보는 생소한 DB지만 뭐 별 다른 문제는 없겠지.. 라고 생각하고 작업을 시작..
일단 테스트 DB(오라클)로 테스트 하면서 로직 구현을 다 해놓고 알티베이스 설치파일을 받아서 설치..
여기서부터 뭔가 불안하다.. 4.3.9 버전이란다.. 구버전이라 듣긴 했건만 4버전이라..
일단 JDBC 연결하고 테스트 시작.. 당연하게도 에러가 난다..
에러의 이유인 즉, 이놈이 MERGE INTO 기능을 쓰지 못한단다.. 멘붕..
그래서 INSERT SELECT NOT EXISTS 를 사용해서 날려본다..
데이터를 일단 900건씩 끊어서 넣어야 하기 때문에 JDBC PreparedStatement의 addBatch()기능을 이용했다.
하지만... 어렵쇼.. 멀티 insert도 안되네..-_-..
한방에 하면 안되나 싶어 이제는 그냥 for문을 돌려서 하나씩 날려버린다...
오오 된다 된다 싶더니만.. 또다시 뱉어낸다.
디버깅해서 따라가보니 Statement에 Maximum이 1024개로 잡혀 있더라..
계속 삽을 푸다 도저히 안되겠어서 과장님께 해결방법 3가지를 제시 했다..
1. 프로시저로 구현 -- 이건 안되는건데 일단 던져나 본것이다..
2. 기존 1트랜잭션처리를 포기하고 900개 단위로 잘라서 저장하기.
3. 처리할수 있는 쿼리를 주세요..-_-
결국 알티베이스 고객지원센터에 문의.. 구버전이라 DB처리는 힘들거 같고 코딩으로 해결해야 된단다..
그래서 결국 2번방법으로 구현해뻐렸다..
대신 900개 단위로 commit을 하되 900개이상을 수행하다 에러가 나면 로그에 저장된 값들 남기기로..
구버전으로 프로그램 짜신분들은 참 대단하단 생각이 들었다..
'DB' 카테고리의 다른 글
FOR LOOP (0) 2017.03.13 [쿼리] INSERT ~ SELECT (0) 2015.11.09 [DB] DUAL 테이블 생성 (0) 2015.11.09 [쿼리] MERGE INTO 사용법 (0) 2015.11.06