---- 외부데이터를 불러들어 저장하기
---//1. 미리 xxx.dat 파일을 생성한다 (엑셀일경우 xxx.csv로 저장)
---     생성할 데이터들은 테이블 컬럼에 맞게 입력을 해주어야 한다.
---//2. 데이타가 저장된 파일이 들어갈 테이블을 생성한다.
create table haksang
(hakbun number(3),
name varchar2(10),
ibhakday varchar2(15),
jubun varchar2(13),
sex varchar2(2),
age number(3),
constraint haksang_hakbun_pk primary key(hakbun));
---//3. xxx.ctl 파일을 생성한다. (생성 내용은 하단참조)
/* load data                        -- 다음데이타를 로드한다.
   infile 'c:\data\student.dat'     -- 로드할 데이터 파일 경로를 지정한다. (xxx.csv도 동일)
   insert into table haksang        -- 로드한 데이터를 저장할 테이블을 지정한다.
   -- 현재 존재하는 데이타에서 또다른 데이타을 추가하려면 insert 대신 append 를 쓰면된다.
   -- 현재 있는 데이타를 지우고 새로운 데이타로 바꿀려면 replace or truncate를 쓰면된다.
   fields terminated by ','         -- 컬럼구분은 ','로 지정한다.
   trailing nullcols
   -- 컬럼이 null이면 데이타에서 ,,로 끝내야 하는데 ,만 끝날경우
   -- fields 다음에 trailing nullcols를 추가 시켜주어야 한다.
   (hakbun integer external         -- 숫자형은 integer external(외부정수형)를 사용
   ,name char                       -- 문자는 char 사용
   ,ibhakday char "to_char(sysdate,'yyyy-mm-dd')"  -- 함수를 사용할때는 ""를 사용하여 함수를 구분지어준다.
   ,jubun char
   ,sex char "case when substr(:jubun,7,1) in ('1','3') then '남' else '여' end"
   ,age integer external        -- 함수안에 컬럼이 들어갈때는 :로 컬럼임을 명시한다.
       "case when substr(:jubun,7,1) in ('1','2')
        then extract(year from sysdate) -
            (to_number(substr(:jubun,1,2))+1899)
        else extract(year from sysdate) -
            (to_number(substr(:jubun,1,2))+1999)
        end"
   ) */
---//4. 명령프롬프트에서 다음을 실행한다.
-- C:\>sqlldr userid=scott/chiken control=c:\data\studentload.ctl log=c:\data\student.log
--                  (유저명/pass)     (control파일 경로명)  (로드후 로드내역이 저장된 로그파일 저장경로지정)
-- 이러면 log 파일이 생성되면서 데이타값이 테이블에 저장이 되어진다.
-- 만약 데이터 값이 제대로 되지 않으면 로그파일에 오류내역이 뜨고 저장되지 않은 데이타는 bad파일에 저장.
select * from haksang;


'Program... > Oracle' 카테고리의 다른 글

Oracle Sequence  (0) 2009.03.14
Oracle sqlldr 실습 및 Index  (0) 2009.03.14
Oracle View  (0) 2009.03.14
Oracle 테이블 관리  (0) 2009.03.14
Oracle constraint(제약조건)  (0) 2009.03.14
Posted by Duritz

공지사항

Yesterday
Today
Total
12-12 20:08

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31