Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Orange for Oracle에서 Loader 사용해서 데이터 입력하기

처음에 오라클을 배울 때는 ISQLPLUS를 이용해서 디비작업을 했었는데 그때는 상당히 초기에 쿼리를 배우는 수준이었기에 그게 당연한줄 알았고 그렇게 어려운 쿼리도 날리지 않았는데 한참동안 MS-SQL을 사용하다가 보니까 엔터프라이즈 매니저에 익숙해져서 비쥬얼툴이 아닌 콘솔로 디비를 다루는 것이 여간 불편한게 아니었다. 거의 작업하기가 어려울 정도로....

그래서 이것저것 찾아보았다. 툴은 여러가지가 있었다. 토드, 프리토드, 웹디벨로퍼등 이것저것.... 처음에는 이클립스에 DbEdit플러그인을 붙혀서 사용했는데 디비 확인을 위해서 항상 이클립스를 띄워야 하는 점과 프로그램이 아니라 플러그인이기 때문에 기능상의 부족함등으로 금새 털어버리고 Orange for Oracle이라는 툴을 현재 사용하고 있다.(제법 괜찮은것 같다. 내가 쓰는 기능은 아직 한정적이고 아직 손에 많이 익지는 않지만... 이런거 보면 EM이 참 좋단말야.. ㅎㅎ)

이번에 프로젝트를 하다가 SQL Loader라는게 오라클에 있다는 걸 알게 되었다. 쉽게 말하자면 txt파일의 자료를 오라클로 올리는 것이다.(실제 로더는 ctl이나 dbf를 통해서 이런저런 작업을 하는 듯 하지만...) 상당히 쉬워서 편할 것 같다. 지난달에 MDB를 오라클로 올리느라고 삽질을 꽤 했는데.....

사용자 삽입 이미지
메뉴바에 보면 왼쪽과 같은 아이콘이 있다. Export, Import 옆에 Loader라는 녀석이 있다. Export와 Import는 DB 또는 Owner, table등을 통째로 dmp파일로 내보내거나 들여오는 것이고 Loader는 훨씬 유연한 데이터 로드기능을 지원하고 있다. 메뉴에서 [Tools] - [Loader]를 선택해도 동일하다.

로더를 실행하면 아래와 같은 창이 뜬다.

사용자 삽입 이미지
약간 보고 있자면 그리 어려운 구성은 아니다. SQL Loader를 명령어를 통해서 오라클로 실행하면 ctl파일을 통해서 txt를 불러들이는데(검색해 보면 많이 나온다.) 여기서는 그냥 txt를 불러서 로드할 수 있다. [1] 부분에서 Owner와 원하는 테이블을 선택해 주고 [2]에서 TXT파일을 불러온다.

TXT파일은 다양한 형태가 될 수 있는데 가장 기본적인게 탭이나 콤마(,)를 통해서 구분을 지어주는 것이다. 엑셀에서 CSV파일로 내보내기 등을 생각하면 될 것이고 엑셀이나 다양한 툴에서 이런 방식으로 내보내기하는 것은 지원하고 있기 때문에 TXT를 만들어 내는 것은 그리 어렵지 않다. TXT의 데이터가 심볼로 구분되어 있는지 아니면 고정된 넓이인지를 선택해 주고 첫줄이나 첫 행이 실데이터인지 아니면 각 행열에 대한 이름인지를 선택해 준다.

구분자를 탭이나 콤마외에도 임의로 기호를 입력할 수 있기 때문에 다양한 형식의 데이터를 로드할 수 있다. 파일을 불러들이면 [3]번 부분에 해당데이터의 예시가 나온다. 어떤식으로 입력되는지를 15열로 예시로 보여준다. 오른쪽에는 현재 테이블의 컬럼구조가 나와있는데 [4]버튼을 누르면

사용자 삽입 이미지

위에처럼 TXT파일의 필드와 테이블의 필드를 매핑시킬수 있는 화면이 나온다. TEXT에 컬럼수가 많아도 필요한 것만 매칭 시키면 데이터가 잘 올라간다.

사용자 삽입 이미지
준비가 다 되었으면 로드창의 상단에 있는 Run버튼을 누르면 데이터가 올라간다. 업로드후에 결과를 보여주는 팝업창을 통해서 올려진 로우수와 에러난 로우수를 확인 할 수 있고 에러가 난 로우는 TXT파일과 같은 위치에 파일명_bad.err과 파일명_bae.txt 2개의 error파일이 생기면서 로드되지 않은 데이터가 저장되기 때문에 올라가지 않은 데이터를 쉽게 확인 할 수 있다.

거꾸려 데이터를 내려받을 때는 상단탭의 Unload를 사용하면 txt파일로 내보낼 수 있다.
2008/01/31 01:40 2008/01/31 01:40