[Oracle] SQL*Loader를 이용해서 csv 파일 입력하기

·2025년 9월 15일
0

오라클 관리

목록 보기
138/163

⭐ DB 내부에 들어있는 3가지

-- db 내부
1. datafile
2. control file
3. redo log file (복구할 때 필요)
 
4. archive log file (redo log file의 복사본)
5. parameter file (인스턴스 구조정보)
6. alert log file (오라클 에러 시 열어봐야하는 파일)
7. password file


19c

[이론1] 위의 그림에 나온 파일들에 대한 설명

  1. data file
    : csv 파일, text file, 엑셀 파일
  2. control file
    : sql loader 의 controlfile 로 csv 파일의 문법이 들어있는 파일
  3. bad file
    : 입력 거부된 data가 들어있는 파일 (문법과 맞지 않아서)
  4. discard file
    : 입력 거부된 data가 들어있는 파일 (문법은 맞는데 테이블에 제약으로 인해서 거부된)
  5. log file
    : 입력하면서 발생한 작업 이력 데이터

[실습1] SQL*Loader 실습하기

■ 실습 순서

 #1.  sample.csv 를 준비합니다.

 #2.  ora19 의 scott 유져에서 sample 테이블을 생성합니다. 

   create  table  sample
   ( line_no    varchar2(20),
     time_inout   varchar2(10),
     in_cnt     varchar2(10),
     out_cnt    varchar2(10) );

 #3.  sample.csv 를 리눅스에 /home/oracle 밑에 올립니다. 

 #4.  데이터 입력 문법이 들어있는 control file 을 생성합니다.

 $ vi   sample.txt

options(skip=1)
load data
infile '/home/oracle/sample.csv'
into table sample
fields terminated by ','
optionally enclosed by '"'
(line_no, time_inout, in_cnt, out_cnt)

 #5.  sqlloader 를 이용해서 데이터를 이행합니다.

 $ sqlldr  scott/tiger  control=sample.txt  data=sample.csv

 #6. 데이터가 잘 들어갔는지 확인합니다
 
$ vi sample.log

Total logical records skipped:          1
Total logical records read:            20
Total logical records rejected:         0
Total logical records discarded:        0

문제1. dept2.csv 를 SQL*Loader 를 이용해서 dept100 테이블에 입력하시오

 create  table  dept100
 ( deptno  number(2),
   dname  varchar2(14),
    loc      varchar2(13) );

답:

[oracle@ora19c ~]$ cat dept2.txt
options(skip=1)
load data
infile '/home/oracle/dept2.csv'
into table dept100
fields terminated by ','
optionally enclosed by '"'
(deptno,dname,loc)

[oracle@ora19c ~]$ sqlldr  scott/tiger  control=dept2.txt  data=dept2.csv

문제2. scott 계정에서 sales100 테이블을 생성하고 sales.csv 를 sql loader를 이용해서 입력하시오

 create table sales100
    as
    select *
     from  sh.sales
      where 1 = 2;
      
alter  table  sales100
 add  prod_name varchar2(20);      

답:

control file 생성

options(skip=1)
load data
infile '/home/oracle/sales.csv'
into table sales100
fields terminated by ','
optionally enclosed by '"'
(PROD_ID,CUST_ID,TIME_ID date 'YYYY/MM/DD HH24:MI:SS',CHANNEL_ID,PROMO_ID,QUANTITY_SOLD,AMOUNT_SOLD,PROD_NAME)

[oracle@ora19c ~]$ sqlldr scott/tiger control=sales.txt data=sales.csv


[실습2] SQL*Loader에서 HWM 위에 데이터 입력하기

1. sales100 테이블을 truncate 합니다.

truncate table sales100;

2. sql loader를 이용해서 데이터 입력하는데 HWM 위로 입력하시오

[oracle@ora19c ~]$ sqlldr  scott/tiger  control=sales.txt  data=sales.csv direct=y


📌 direct 옵션

  • y : direct path load 방식으로 load 한다. (HWM 로 입력)
  • n : conventional load 방식으로 load 한다. (HWM 아래에 입력)

0개의 댓글