database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 9047 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 9047
SQL Loader 예제
작성자
정재익(advance)
작성일
2001-12-25 13:28
조회수
4,700
첨부파일: SQL_LOADER.doc (45,568bytes)

SQL*LOADER SAMPLES

 

SQL*Loader는 외부 화일의 데이타를 ORACLE 데이타베이스의 테이블에 넣기 위한 유틸리티입니다. SQL*Loader를 사용하려면 외부 데이타 화일과 콘트롤화일이 필요합니다. 콘트롤화일이라고 하는 것은 로드하는 데이타의 정보를 저장한 화일입니다. 간단한 샘플 콘트롤화일을 설명하겠습니다.

 

load data 제어화일의 선두에는 반드시 이 말이 필요합니다.

infile sample.dat 외부화일을 지정합니다.

replace 테이블에 데이타 넣는 방법 지정

into table TABLE_NAME 데이타를 로드하는 테이블을 지정

fields terminated by ',' 데이타 필드의 종결문자 지정

(a integer external, 테이블의 열, 외부데이타 화일의 데이타 형을 지정

b char)

 

참고로 replace 외에 다음의 옵션이 가능합니다.

 

replace 테이블의 기존 행을 모두 삭제(delete)하고 인서트

append 새로운 행을 기존의 데이타에 추가

insert 비어 있는 테이블에 넣을 때

truncate 테이블의 기존 데이타를 모두 truncate 하고 인서트

 

SQL*Loader를 실행하면 아래의 화일이 작성됩니다.

 

* 로드작업중 동작에 관한 통계 등을 포함한 로그화일(확장자는 log)

* 데이타 에러 때문에 로드가 안된 레코드를 저장한 화일(확장자는 bad)

* 사용자의 선택기준에 적합하지 않은 레코드를 저장한 화일(discard 화일)

이것은 discardfile 옵션으로 별도로 지정해야 생성됩니다.

 

실행방법은 다음과 같습니다.

 

$sqlload scott/tiger control=sample.ctl data=sample.dat

1.1 임의의 열에 변화없는 고정 문자열(값)을 입력한 경우

   **** 테이블 구조 ****
   create table cons_test
   (a number,
    b number,
    c number,
    d varchar(10))

   **** 콘트롤 화일 ****
   load data
   infile cons.dat
   replace
   into table cons_test
   fields terminated by ','
   (a integer external,
    b integer external,
    c CONSTANT '100',
    d char)

   **** 외부 데이타 화일 ****
   1,2,DATA
   2,4,DATA2

   **** 검색결과 ****
   SQL>select * from cons_test;

          A       B       C D
   ---------------------------------
          1       2     100 DATA
          2       4     100 DATA2

주의사항 : 이 예에서 C열은 데이타 화일에 넣어서는 안됩니다. COSNTANT는그것으로 완결된 열 지정의 하나가 됩니다. integer external 데이타형은 수치데이타를 문자형식(ASCII CODE)로 나타낸 것입니다.

 

1.2 로드한 때의 날짜를 데이타로 로드하고 싶은 경우

**** 테이블 구조 ****
create table sysdatetb
(a number,
 b date,
 c varchar(10))

**** 콘트롤 화일 ****
load data
infile sysdate2.dat
replace
into table sysdatetb
fields terminated by ','
(a integer external,
 b sysdate,
 c char(10))

**** 외부 데이타 화일 ****
111,STRINGS
222,STRINGS2

**** 검색결과 ****
SQL>select * from sysdatetb;

       A B         C
-----------------------------
     111 13-MAY-94 STRING
     222 13-MAY-94 STRING2

주의사항 : 이 예에서는 B열은 데이타 화일에 넣어서는 안됩니다. SYSDATE는 그것으로 완결된 열지정의 하나가 됩니다. 새로운 시스템 날짜매김은 컨벤셔널 패스에서는 실행시에 삽입된 각각의 레코드 배열마다 또, 다이렉트 패스의 경우는 로드된 각각의 레코드의 블럭마다 사용됩니다.

[Top]
No.
제목
작성자
작성일
조회
9052Oracle 8i의 Migration workbench
정재익
2001-12-25
5182
9051Repository 생성 절차
정재익
2001-12-25
4060
9049Oracle을 외부 네트워크로 열어주고자 할때(MTS인 경우)
정재익
2001-12-25
4214
9047SQL Loader 예제
정재익
2001-12-25
4700
9045Oracle8의 national Character Set(nchar)에 대하여
정재익
2001-12-25
4104
9044Oracle8i 에서의 character set 변경
정재익
2001-12-25
3866
9039Intermedia Text 설치하기 [1]
정재익
2001-12-25
4496
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다