Database/Oracle

[Oracle]SQL Loader로 TEXT파일 업로드 하기

retto9522 2025. 2. 20. 01:49

SQL Loader(sqlldr)

SQL Loader란 오라클을 설치하면 기본적으로 내장되어 있는 툴로, 주로 정제된 대용량 데이터를 DB에 업로드할 때 사용합니다.

 

sqlldr의 데이터 적재 방식

SQL Loader는 데이터를 적재할 때 크게 2가지 방식으로 나뉘어집니다.

  • DPL(Direct Path Load) 방식
    데이터가 Insert될 때 SQL을 사용하지 않고 직접 메모리에 Data Block을 만들어서 해당 테이블에 직접 적재하는 방식. 따라서, Undo, Redo 로그를 발생시키지 않습니다. Table Lock 발생
  • CPL(Conventional Path Load) 방식
    Buffer Cache를 거쳐 Data File을 SQL Insert 방식으로 적재한다. Row Lock 발생

 

sqlldr로 TEXT 파일 업로드 하는 방법

1. TEXT 파일의 필드 구분자, 줄바꿈구분자의 헥사코드 등등을 파악하기

  • 필드 구분자: |
  • 줄바꿈 구분자: \n (\n의 헥사코드: 0D0A)

2. 필요한 요소

  • Insert할 대상 테이블
  • control 파일(.ctl파일)
  • data 파일(.txt파일)

3. control 파일 만들기(.ctl)

데이터를 업로드 함에 있어서 가장 핵심이 되는 파일.

.ctl 확장자를 가지며 테이블 및 속성에 대한 값을 정하고 데이터를 적재하기 위해 컨트롤러 역할을 하는 파일입니다. 

LOAD DATA
INFILE '파일위치\파일명.확장자' "str x'줄바꿈 구분자의 헥사코드'" --ex)Enter(\n)의 경우: "srt x'0D0A'"
DISCARDFILE '파일위치\폐기된파일.확장자'
APPEND --현재 잇는 데이터에 추가로 데이터 insert
INTO TABLE EMPLOYEES --데이터를 삽입할 대상 테이블
FIELDS TERMINATED BY '|' --TERMINATED BY '필드 구분자' 
TRAILING NULLCOLS ( --NULL값은 NULL로 입력
	insert할 대상 테이블 필드명1,
	insert할 대상 테이블 필드명2,
	insert할 대상 테이블 필드명3,
	...
)

작성한 ctl파일

4. 터미널에서 SQL*LOADER 실행하기

sqlldr userid=계정명/비밀번호 control='컨트롤파일 위치' log='로그파일 위치/파일명' bad='업로드 실패한파일 위치/파일명' readsize='버퍼사이즈' bindsize='배열사이즈' errors='허용하는 에러 갯수'

 

5. 결과 확인하기


참고

https://antworld.tistory.com/m/entry/SQLLOADER-%EB%8C%80%EC%9A%A9%EB%9F%89-TEXT%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%A1%9C%EB%93%9C

 

[SQL*LOADER] 대용량 TEXT파일 업로드

[ORACLE에서 SQL LOADER를 통해 임포트하는 방법] 1. SQL*LOADER를 이용 2. 대용량 TEXT파일의 필드 구분자 및 등등을 파악해야 함. 3. 필요요소 - 대용량 TEXT파일.txt - 처리할 컨트롤파일.ctl - insert할 테이블

antworld.tistory.com

https://m.blog.naver.com/eo930827/222354287468

 

[Database] Oracle SQL loader

SQL loader 란 오라클 Database를 설치하면 기본 내장되어있는 Datafile을 DB에 적재해주는 툴이다....

blog.naver.com