SQLLoader는 대량의 데이터를 Oracle 데이터베이스에 빠르고 효율적으로 로드할 수 있는 강력한 도구입니다. 데이터를 로드하기 위해 가장 먼저 작성해야 하는 것이 바로 **컨트롤 파일(Control File)**입니다. 이 파일은 데이터의 구조와 로드 방식을 정의하는 핵심 역할을 합니다. 이번 포스팅에서는 SQLLoader 컨트롤 파일 작성법을 자세히 설명하고, 작성 예시를 통해 이해를 돕겠습니다.
1. SQL Loader 컨트롤 파일이란?
컨트롤 파일은 SQL*Loader에게 데이터를 어떻게 해석하고 데이터베이스에 어떻게 삽입할지 지시하는 텍스트 파일입니다. 이 파일에는 데이터 파일의 위치, 테이블 이름, 로드할 열의 정의 및 데이터 처리 규칙 등이 포함됩니다.
컨트롤 파일의 기본 구성 요소는 다음과 같습니다:
- LOAD DATA: 데이터를 로드한다는 명령어.
- INFILE: 로드할 데이터 파일의 위치.
- INTO TABLE: 데이터를 삽입할 테이블 명시.
- FIELDS: 필드 구분자와 데이터 형식 지정.
- (COLUMN1, COLUMN2, …): 데이터베이스의 열 매핑.
2. 컨트롤 파일 작성법
(1) 기본 문법
다음은 간단한 컨트롤 파일의 기본 구조입니다.
LOAD DATA
INFILE 'data.txt'
INTO TABLE my_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
column1,
column2,
column3
)
- LOAD DATA: SQL*Loader가 데이터를 로드하도록 지시합니다.
- INFILE: 입력 데이터 파일 경로를 지정합니다.
- INTO TABLE: 데이터를 삽입할 대상 테이블을 지정합니다.
- FIELDS TERMINATED BY: 필드 간 구분자를 지정합니다(예: 쉼표).
- OPTIONALLY ENCLOSED BY: 데이터가 따옴표로 둘러싸인 경우 처리 방식 지정.
- (열 목록): 데이터를 매핑할 데이터베이스 테이블의 열을 나열합니다.
(2) 예시 1: CSV 파일 로드
다음은 쉼표로 구분된 CSV 파일을 EMPLOYEES 테이블에 로드하는 예시입니다.
컨트롤 파일 내용 (employees.ctl):
LOAD DATA
INFILE 'employees.csv'
INTO TABLE employees
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
employee_id,
first_name,
last_name,
hire_date DATE "YYYY-MM-DD",
salary
)
데이터 파일 내용 (employees.csv):
101,John,Doe,2023-01-15,50000
102,Jane,Smith,2023-02-20,55000
103,Bob,Johnson,2023-03-10,60000
실행 명령:
sqlldr username/password control=employees.ctl
(3) 예시 2: 고정 길이 데이터 파일 로드
고정 길이 데이터를 로드하려면 FIELDS 대신 각 열의 시작과 길이를 명시합니다.
컨트롤 파일 내용 (fixed_width.ctl):
LOAD DATA
INFILE 'fixed_width.txt'
INTO TABLE products
(
product_id POSITION(1:5),
product_name POSITION(6:35),
price POSITION(36:45) DECIMAL EXTERNAL
)
데이터 파일 내용 (fixed_width.txt):
00001Laptop 1500.50
00002Smartphone 800.00
00003Tablet 1200.75
(4) 예시 3: 조건부 데이터 로드
특정 조건에 따라 데이터를 필터링해 로드할 수도 있습니다.
컨트롤 파일 내용 (conditional.ctl):
LOAD DATA
INFILE 'sales.txt'
INTO TABLE sales_data
WHEN transaction_date >= '2023-01-01'
FIELDS TERMINATED BY '|'
(
sale_id,
customer_name,
transaction_date DATE "YYYY-MM-DD",
amount
)
데이터 파일 내용 (sales.txt):
1001|Alice|2022-12-31|250.00
1002|Bob|2023-01-01|300.00
1003|Charlie|2023-02-15|400.00
위 예시는 2023-01-01 이후의 데이터만 sales_data 테이블에 로드합니다.
3. SQLLoader 컨트롤 파일 작성 시 유의 사항
- 데이터 파일 경로: 컨트롤 파일에서 지정한 데이터 파일 경로가 올바른지 확인합니다.
- 필드 구분자: 데이터 파일의 형식에 맞는 구분자 설정이 중요합니다.
- 데이터 매핑 정확성: 테이블 열과 데이터 파일의 열 순서 및 형식이 일치해야 합니다.
- 오류 처리 옵션: 데이터 로드 도중 발생하는 오류를 최소화하려면 BADFILE 및 DISCARDFILE 옵션을 사용해 오류 데이터를 별도로 저장할 수 있습니다.
4. 마치며
SQL*Loader의 컨트롤 파일은 대량 데이터를 효율적으로 처리하는 데 필수적입니다. 다양한 데이터 형식과 조건을 지원하기 때문에 유연하게 활용할 수 있습니다. 위에서 소개한 예시를 바탕으로 여러분의 데이터 처리 환경에 맞게 컨트롤 파일을 작성해 보세요!
'Database' 카테고리의 다른 글
오라클 DBMS_STATS로 통계 정보 업데이트하기 (0) | 2024.12.04 |
---|---|
오라클 DBMS_SCHEDULER로 작업 스케줄링하기 (0) | 2024.12.04 |
오라클 SQL Developer를 활용한 데이터베이스 관리 (0) | 2024.12.04 |
오라클 클러스터 환경에서의 테이블 잠금 관리 (0) | 2024.12.04 |
오라클 RAC 기본 개념 이해 (0) | 2024.12.04 |