오라클(Oracle) - 테이블 생성 및 ctl 사용
테이블을 생성하고 많은 데이터를 넣어야 할 때
insert 문장을 사용하여 넣기는 굉장히 힘들고 번거롭다
하여 데이터를 구분자로 열을 나눠 데이터를 필드에 맞게 넣을 수 있는 방법이 있다.
예제로 테이블을 하나 만드는 sql문을 작성하도록 한다.
drop table test_table; create table test_table ( id varchar2(50) not null, pw varchar2(50) not null, constraint pk_test_table primary key (id) ); commit; |
파일 명 : test.sql, 경로 : 바탕화면\ctl |
작성자의 경우에는 테이블 생성 sql을 작성할 때에는
기존에 사용하던 테이블이 남아있을 수 있으므로
drop table을 먼저 작성해주는 편이다.
작성했다면 저장했던 경로에서 cmd창을 열어준다
sql파일이 있는 경로에서 cmd창을 열었으면 아래와 같이 입력을 해준다
sqlplus id/pw @파일명. sql
정상 적으로 실행이 됐다면 아래와 같이 결과가 나올 것이다.
dropt table 에러의 경우 테이블이 처음에는 존재하지 않기 때문에 나오는 에러로
처음 진행하는 것이라면 당연히 나오는 에러이니 고민하지 말고 넘어가도록 하자
이제 테스트로 넣을 데이터를 만들어준다.
테스트 데이터이니 아래와 같이 그냥 아무렇게나 넣어주었다.
testId|123456 testId2|121238 testId3|815618 testId4|asdasd testId5|213asd testId6|xczx2 testId7|ax6c5z testId8|a318 testId9|as+89 testId10|9741xzc/ testId11|asda2 testId12|11czxc1 testId13|2222222 |
파일 명 : datafile.txt |
필드 구분자의 경우 아무거나 넣어도 상관없지만
작성자의 경우에는 |(파이프)로 사용하였다.
구분자를 넣는 이유는 필드를 구분하기 위해서다
한 줄로 예를 들면 |로 구분되어
tstdId는 id 필드로
123456은 pw 필드로 들어가게 된다.
그렇다면 이제 구분자를 잘 적용해서 데이터를 만들었으니
ctl 파일을 작성하도록 한다.
load data infile 'C:\Users\user1\Desktop\ctl\datafile.txt' append into table test_table fields terminated by '|' ( id, pw ) |
파일명 : test.ctl |
ctl의 작성방법은 위와 같다.
load data의 경우는 없어도 되지만 data load 하는 ctl이라는 것을 알려주는 것이므로 작성하여 사용하는 것이 좋다
infile 뒤에는 사용할 데이터 파일을 넣어준다
append나 insert 둘 중에 하나를 사용한다
fields terminated by 부분은 구분자를 지정해 준다.
(작성자의 경우 파이프를 사용하였기에 |를 넣어주었다)
괄호 안에는 sql에서 작성했던 필드 순서와 동일하게 적어준다.
이렇게 되면 데이터 파일을 테이블에 작성할 준비가 완료되었다
테이블 생성한 아이디로 로그인하여
아래와 같이 작성 후 실행해준다
$sqlldr userid= id/pw control = './test.ctl' log = './test.log'
실행이 잘 되었다면
조회했을 때 결과가 잘 출력이 될 것이다