필자가 요구하는 것은 데이터베이스에서 데이터를 읽고이를 바이트로 변환 한 다음 Blob 열의 다른 데이터베이스 (Oracle)로 스트리밍하는 것이다.Spring Batch 애플리케이션에서 이진 (Blob) 데이터를 처리하는 방법
Oracle은 Blob 열로 스트리밍하기 위해 JDBC 자동 커밋을 비활성화하고 완료되면 Connection # Commit을 호출해야합니다.
현재 3 단계가 있습니다.
1 단계 (태스크 릿) : 두 개의 SQL 쿼리가 있습니다. 하나가 열을 초기화 (UPDATE DATABASEUSER.TABLENAME SET payload = empty_blob() WHERE PrimaryKey= ?
)
은 두 번째는 물방울 로케이터를 반환 (SELECT payload AS payload FROM DATABASEUSER.TABLENAME WHERE PrimaryKey = ? FOR UPDATE
)
또한 자동 커밋을 해제하는 데이터 소스에서 연결 개체를 얻을
2 단계 (척) 원본 DB에서 일반적인 방식으로 데이터를 읽는 IteamReader와 행을 CSV 형식으로 변환하지만 바이트 단위로 변환하는 프로세서가 있습니다. 그런 다음 Blob 열에 데이터를 스트리밍하는 Custom ItemWriter가 있습니다.
3 단계 (태스크 릿) 이것은 연결을 정리하고 커밋 할 때입니다.
질문 1 : 올바른 전략입니까? 내가 어떤 방향인지 알기가 쉽지 않다.
아니요. 여러 단계에서 트랜잭션을 보유 할 수 없습니다. 각 단계는 자체적으로 커밋해야합니다. –
@DeanClark 감사합니다. –