> mysql 에서
>
> 아래와 같은 text 형식을 DB로 저장할 때
>
> ------------------------------------------
> ...
>
> 100-022 | 서울특별시 | 중구 명동2가
> 100-031 | 서울특별시 | 중구 저동1가
>
> ...
> --------------------------------------------
>
> (LOAD DATA INFILE '/tmp/post.txt' REPLACE INTO TABLE postcode FIELDS
>
> TERMINATED BY '|';)
>
> 이런식인데요.
>
> 오라클에선 어떤 명령을 써야하는지요.
>
> 부탁합니다.
>
SAM file을 오라클 DB로 넣을 때 , sqlldr 또는 sqlload 명령을 사용합니다.
( 같은 명령어인데 버전마다 이름이 약간이 달라졌지요.)
데이타 파일이 '/tmp/post.txt' 이라면
테이블과 데이타에 대한 관련 정보를 control file에 넣고
sqlldr을 사용해서 입력을 하죠.
위의 경우를 예제로 들면 /tmp 디렉토리에서 postcode.ctl 파일을 만듭니다.
-------------------------------
load data
infile post.txt
append
into table postcode
fields terminated by '|'
trailing nullcols
(a char "trim(:a)",
b char "trim(:b)",
c char "trim(:c)"
)
-------------------------------
여기서 a,b,c는 칼럼 이름이고, 데이타 파일에 있는 데이타의 순서대로
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
칼럼 이름을 적어 주어야 합니다. 그리고 trim 함수는 데이타의 앞뒤에
공백이 있는 것 같아서 사용했습니다. 없으면 "trim(:a)" 형식은 생략하세요.
그리고 쉘에서
$ sqlldr userid=scott/tiger control=postcode.ctl errors=100000
( 당연히 userid는 postcode 테이블의 owner로 하는 것이 제일 좋지요?)
반드시 작업 디랙토리에서 postcode.log 파일을 읽어보시고,
정상적으로 수행이 되었는지 확인하세요.
만약 정상적으로 수행이 안되었다면 postcode.bad 파일도 있을 겁니다.
이 파일은 입력되지 못한 데이타가 쌓이는 파일인데 원인을 파악하고
다시 넣어셔야 합니다.
그리고 보다 자세한 명령은 쉘에서
$ sqlldr
만 하면 커맨드 라인 옵션이 보이고, 간단한 사용법이 나오죠.
자세한 내용은 오라클 매뉴얼 utilities의 SQL*Loader를
보세요. 자세하게 나와 있습니다. 예제도 있구요.
|