문제

우리는 이겨낼 필요 일부 테이블에서 Informix SE 데이터베이스,테이블 자르 Oracle10g,우와 그들을 삼성전자 데이터입니다.

는 대량 가져오기 작동하는가?데이터 유형 충돌?

내가 사용하려는 간단하 Java 실행할 수 있는 예약됩니다.할 수 있는 Java 프로그램 호출이 대량으로 가져오?가 예을 제공할 수 있습니까?감사합니다.

도움이 되었습니까?

해결책

흥미로운 시나리오!

거기에 여러 가지 문제에 대해 걱정:

  • 무슨 형식으로는 오라클의 대부분은 가져 오기를 기대할 데이터가?
  • 무엇이 올바른 형식으로 날짜와 DATETIME 가치입니까?

실용적으로(그리고 경험을 바탕으로 함께 Informix 보다는 오히려 오라클)보다는,자르기 전에 테이블을 대량 적재,나는 대량 데이터를 로드하는 새로 만든 테이블을(상대적으로 시간이 많이 소요되는 과정),다음을 준비하는 테이블과 함께 새로운.에 따라 어떤 작품이 가장 빠른,나는 하나의 순서 작업:

  • 이름 바꾸기 오래된 테이블의 테이블이 정크
  • 이름 변경 새로운 테이블의 테이블

다음의 순서에 의해 드롭 테이블이 정크'작업,또는 나는 하:

  • 드롭 이전 테이블
  • 이름 변경 새로운 테이블의 테이블

면 작업은 이 방법으로,'시간을 위해'테이블을 최소화,비해'자를 테이블'다음'부하 테이블'.

오라클은 다음과 같 SE-그것은 DDL 문을 비 트랜잭션(ID 와 달리할 수 있는 트랜잭션을 떨어 테이블을 만들고 새로운 중 하나를 다시 설정의 운영).

어떻게 데이터를 내보내?

이에 따라 어떻게 가동 가능한 Oracle 더니다.면에 적응할 수 있습 Informix 의 표준 출력 형식(예를 들어,언로드 포맷)다음의 내리기 작업은 간단하다.해야 할 수 있습니다 설정 DBDATE 환경변수를 보장하는 날짜 값에 의해 인식되 오라클도 있습니다.나는 믿을 수 있습'DBDATE="Y4MD-"'가 될 가능성이 받아들여;는 SQL 표준 2009-12-02 표기법에 대한 2nd 월 2009.

기본 언로드할 수 있는 형식으로 요약'관으로 구분된 필드를 백슬래시 탈출 포함된 줄바꿈,백슬래와 관호':

abc|123|2009-12-02|a\|b\\c\
d||

이것은 하나의 레코드 문자,숫자,날짜,그리고 다른 문자열(을 포함하는'a','|','b','\','c',newline,'d')null 필드입니다.후행 공백 제거에서 문자열;빈 하지만 null 이 아닌 캐릭터장은 하나의 공백에서는 언로드 파일입니다.

는 경우 오라클할 수 없습도 쉽게 만들 수 있을 처리하는,다음을 고려할지 여부는 펄+DBI+DBD::Informix+DBD::Oracle 될 수 있는 도구 세트를 사용하여 이를 연결할 수 있습을 모두 오라클 및 Informix(SE)데이터베이스 데이터를 전송합니다.

또는,당신을 조사하기 위해 필요 대안 언 위한 SE.하나의 프로그램 될 수 있는 조사 가치가를 사용하지 않는 경우 윈도우 SQLCMD (공정한 경고:저자는 편견에 들어온다).그것은 상당히 강력한의 설정 출력 포맷은 아마 만드는 텍스트 형식으로 Oracle 찾는 것이 허용 가능한 CSV(예를 들어).

최종 대체하는 것입 도구성 삽입 문을 선택한 데이터이다.내 생각으로 도움이 될 수 있습니다 추가 SQLCMD 지만,그것은 아직 거기입니다.그래서,당신은 것을 사용:

SELECT 'INSERT INTO Target(Col1, Col2) VALUES (' ||
       Col1 || ', ''' || Col2 || ''');'
  FROM Source

이를 생성하는 간단하 삽입하는 문입니다.Snag 이 없다는 강력한 경우 Col2(문자열)자체는 따옴표를 포함(고 줄 바꿈 문제가 발생할 수 있습에 끝을 받기도).할지 여부를 평가해야이 허용됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top