SQL*Loader 실행하기
Oracle/SQL

아무옵션 없이 sqlldr 명령어만 실행하면 옵션들이 나옵니다.

[oracle@localhost ~]$ sqlldr

SQL*Loader: Release 11.2.0.2.0 - Production on Thu Mar 28 04:02:10 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Usage: SQLLDR keyword=value [,keyword=value,...]

Valid Keywords:

    userid -- ORACLE username/password
   control -- control file name
       log -- log file name
       bad -- bad file name
      data -- data file name
   discard -- discard file name
discardmax -- number of discards to allow          (Default all)
      skip -- number of logical records to skip    (Default 0)
      load -- number of logical records to load    (Default all)
    errors -- number of errors to allow            (Default 50)
      rows -- number of rows in conventional path bind array or between direct path data saves
               (Default: Conventional path 64, Direct path all)
  bindsize -- size of conventional path bind array in bytes  (Default 256000)
    silent -- suppress messages during run (header,feedback,errors,discards,partitions)
    direct -- use direct path                      (Default FALSE)
   parfile -- parameter file: name of file that contains parameter specifications
  parallel -- do parallel load                     (Default FALSE)
      file -- file to allocate extents from
skip_unusable_indexes -- disallow/allow unusable indexes or index partitions  (Default FALSE)
skip_index_maintenance -- do not maintain indexes, mark affected indexes as unusable  (Default FALSE)
commit_discontinued -- commit loaded rows when load is discontinued  (Default FALSE)
  readsize -- size of read buffer                  (Default 1048576)
external_table -- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE  (Default NOT_USED)
columnarrayrows -- number of rows for direct path column array  (Default 5000)
streamsize -- size of direct path stream buffer in bytes  (Default 256000)
multithreading -- use multithreading in direct path
 resumable -- enable or disable resumable for current session  (Default FALSE)
resumable_name -- text string to help identify resumable statement
resumable_timeout -- wait time (in seconds) for RESUMABLE  (Default 7200)
date_cache -- size (in entries) of date conversion cache  (Default 1000)
no_index_errors -- abort load on any index errors  (Default FALSE)

PLEASE NOTE: Command-line parameters may be specified either by
position or by keywords.  An example of the former case is 'sqlldr
scott/tiger foo'; an example of the latter is 'sqlldr control=foo
userid=scott/tiger'.  One may specify parameters by position before
but not after parameters specified by keywords.  For example,
'sqlldr scott/tiger control=foo logfile=log' is allowed, but
'sqlldr scott/tiger control=foo log' is not, even though the
position of the parameter 'log' is correct.
[oracle@localhost ~]$
위 값중에 errors 값이 default 50으로 되어있는데 50값보다 많은 에러가 발생하면 작업이 중단되어
더 이상 진행이 되지 않는다는 의미 이므로 옵션을 줄때 아주 충분히 값을 지정해 작업해야 합니다.

1) SQL*Loader 실습 1 - 입력할 데이터가 외부 프로그램 자료일 경우
(아래 그림의 엑셀 데이터를 오라클의 F_Animal 테이블로 입력할 경우)

엑셀을 열어서 위와 같이 데이터를 입력했습니다.

위의 엑셀 데이터를 csv(쉼표로구분) 파일로 저장합니다. 그리고 파일이름은 a1으로 하겠습니다.

저장이 완료 된 파일은 winscp나 xftp를 이용해서 oracle home의 원하는 디렉토리에 옮깁니다.
SQL> !vi /app/oracle/tran_ex/tran.cvs

15,Heracules baboon,21cm,Hysterocrates hercules,사나움,보통,나이지리아,10년이상,버로우
16,King baboon,23cm,Citharischius crawshayi,사나움,빠름,탄자니아 케냐 등,15년,버로우
~
~
vi editor를 이용해 xftp로 옮긴 tran.csv파일을 연다.
필요한것만 빼고 위처럼 만들어준 후에 저장 종료한다.

control file
SQL> !vi /app/oracle/tran_ex/tran.ctl

load data
infile "/app/oracle/tran_ex/tran.csv"
append
into table taran
fields terminated by ','
(no,name,max_size,technical_name,personality,growth,habitat,max_age,type)
~
~
위처럼 control file 만들어준후에 저장종료한다.

이제 데이터를 넣을 테이블을 만들어주면 된다.
SQL> create table taran
  2  (no number,
  3  name varchar2(50),
  4  max_size varchar2(50),
  5  technical_name varchar2(50),
  6  personality varchar2(50),
  7  growth varchar2(50),
  8  habitat varchar2(50),
  9  max_age varchar2(50),
 10  type varchar2(10)) to tablespace spider;

created table
테이블을 생성했으면 이제 데이터를 넣어주면 된다.
[oracle@dbserver ~]$
[oracle@dbserver ~]$ sqlldr scott/tiger control='/app/oracle/tran_ex/tran.ctl'

SQL*Loader: Release 11.2.0.2.0 - Production on Tue Nov 11 09:12:39 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 2
[oracle@dbserver ~]$
2개의 데이터가 들어갔다.
확인해보자

SQL> select * from taran
  2  order by 1;

  NO NAME                                MAX_SIZE TECHNICAL_NAME                 PERSONALIT GROWTH     HABITAT                        MAX_AGE         TYPE
---- ----------------------------------- -------- ------------------------------ ---------- ---------- ------------------------------ --------------- ----------
   0 Mexican Golden Redrump              15cm     Brachypelma ruhnaui            온순함     느림       멕시코                         20년이상        배회성
   1 Mexican_Redknee                     13cm     Brachypelma_smithi             온순함     느림       멕시코                         15년 이상       배회성
   2 Mexican_redleg                      15cm     Brachypelma_emilia             온순함     느림       멕시코                         15년 이상       배회성
   3 Antilles Pinktoe                    14cm     Avicularia versicolor          예민함     보통       마티니크섬                     14년            나무위성
   4 Giant Mustard stripe                18cm     Grammastola aureostriatum      온순함     보통       프랑스챠코                     20년 이상       배회성
   5 Mexican Pink                        15cm     Brachypelma Klaasi             온순함     느림       멕시코                         20년 이상       배회성
   6 Mexican flame knee                  15cm     Brachypelma Klaasi             온순함     느림       멕시코                         20년 이상       배회성
   7 Mexico Fireleg                      14cm     Brachypelma Klaasi             온순함     느림       멕시코                         20년 이상       배회성
   8 Costa Rican Zebra                   12cm     Aphonopelma seemani            온순함     보통       파나마 과태말라 열대우림       20년 이상       배회성
   9 Brazillian giant white knee         22cm     Acanthoscurria geniculata      보통       빠름       브라질 아마존                  15년            배회성
  10 Mexican true red leg                13cm     Brachypelma emillia            온순함     보통       멕시코                         15년 이상       배회성
  11 Goliath birdeater                   30cm     theraphosa blondi              사나움     빠름       베네수엘라 등                  25년            배회성
  12 Peruvian Blonde                     15cm     Lasiodoredes polycuspulatus    온순함     보통       페루                           null            null
  13 Brazillian salmon pink              15cm     Lasiodoredes parahybana        공격적     빠름       브라질                         20년            배회성
  14 Amazon Spaier Pinktoe               12cm     Avicularia fasciculata         온순함     보통       브라질                         10년이상        나무위성
  15 Heracules baboon                    21cm     Hysterocrates hercules         사나움     보통       나이지리아                     10년이상        버로우
  16 Usambara Orange Baboon              15cm     Pterinochilus Murinus          엄청사나움 엄청빠름   탄자니아 케냐 등               12년            3성
  17 King baboon                         23cm     Citharischius crawshayi        사나움     빠름       탄자니아 케냐 등               15년            버로우

18 rows selected.

SQL>
데이터가 정상적으로 들어가져 있다.
(*추가적으로 실습하면서 같이 썼던 쿼리들*)
SQL> insert into taran(clumns.....) /데이터 여 넣기
  2  values(key....)
-------------------------------------------
SQL> alter table taran  /type 바꾸기
  2  modify(clumns type);
-------------------------------------------
SQL> alter table taran /컬럼추가
  2  add (clumns type)
-------------------------------------------
update taran  /업데이트. where절 조심
  2  set 변경할 컬럼 = 변경된 값
  3  where 조건
-------------------------------------------