[Oracle] 커맨드창(cmd)에서 sql 스크립트 실행하기

테이블, 오브젝트, 패키지 생성 삭제scrip문을 미리 만들어놔서 커맨드창에서 편하게 실행시켜 빠르게 스키마를 구성할 수 있다. 

 

cmd창에서 sql파일 실행.

실행시킬 create.sql

위 스크립트문은 커맨드창에서 실행할꺼라 REM이 있다. REM은 배치파일에서 주석문으로 쓰인다.

또 커맨드창에서 실행시키려고 sqlplus 문법인 스크립트 실행문 @@, @가 앞에 붙어있는데 이 차이는 잘 모르겠다.

 

UNDEFINE을 만들어 놓은 이유는 테이블 생성할때 어느 테이블스페이스를 사용할지 지정하는데 그걸 변수로 만들어서 DEFINE을 이용하여 변수를 사용한다.

 

cre~.sql 파일들은 전부 아래처럼 이루어져있다.

&&SYSTEM_TBS 처럼 앞에 &&가 붙으면 변수라는 뜻이다. cmd창에서 변수명을 입력하라고 뜬다. 

 

이제 저 스크립트 문들을 한번에 실행시켜보겠다.

 

EasyShell을 이용하여 sql파일 실행

먼저 이클립스의 마켓플레이스에서 EasyShell을 다운받는다.

 

다운받고 폴더를 우클릭하면 EasyShell이 나타나는데 Open Command Prompt Here을 클릭하면 해당경로의 cmd창이 열린다.

 

 

 

 

 

 

 

그다음 sqlplus 계정명/계정비번@TNS를 친다. 그러면 접속이 된다.

 

그리고 나서 @@create.sql 입력해 파일을 실행시킨다.

 

아까 위에서 create table문에서 &&테이블스페이스명 이 있었는데 그 변수의 값을 입력하라는 것이다. 이것이 싫으면 미리 변수에 값을 저장할 수 있는데 그것이 DEFINE이다. DEFINE은 그냥 사용할수 없고 아래처럼 SET DEFINE ON을 입력해야 한다. 

 

변수에 값을 입력하면 스크립트문을 실행한다. 나는 전에 만들어놔서 아래처럼 이미 있는 객체라고 에러가 난다.

 

 

 

정리

  • cmd창에서 sql파일을 실행시킬수 있는데 그 경로에서 sqlplus로 접속을 하고 파일을 실행시켜야 한다. 그래서 이클립스에서 EasyShell을 이용하면 편하다.
  • 파일을 실행시킬땐 @@를 앞에 붙여야 한다. @가 한개일때도 실행되는거 같은데 차이는 모르겠다.. 알면 댓글로 알려주세요
  • 스크립트문에 &&은 변수를 뜻하는 것이고 커맨드창에서 실행시키면 변수를 입력하라고 메시지가 나온다.
  • 일일이 변수를 입력하기 싫으면 DEFINE 변수 = 값을 입력해주면 되는데 SET DEFINE ON 을 먼저 실행해야 한다.

 

 

 

 

 

댓글

Designed by JB FACTORY