2009. 3. 14. 03:35 Program.../Oracle
Oracle sqlldr (외부데이타 부워넣기) 사용법
---- 외부데이터를 불러들어 저장하기
---//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;
---//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 |