[Oracle] 커맨드창(cmd)에서 sql 스크립트 실행하기
- Project/iRT
- 2020. 2. 13.
테이블, 오브젝트, 패키지 생성 삭제scrip문을 미리 만들어놔서 커맨드창에서 편하게 실행시켜 빠르게 스키마를 구성할 수 있다.
cmd창에서 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 을 먼저 실행해야 한다.
'Project > iRT' 카테고리의 다른 글
[Oralce] DB 백업(덤프) 하는 방법(exp, expdp툴 사용) (6) | 2020.02.14 |
---|---|
[Window] 배치파일(*.bat)로 파일 백업하기 (2) | 2020.02.13 |
[Oracle] Oracle 19c 클라이언트(Client)다운방법 (2) | 2020.02.10 |
[AWS] RDS 테이블스페이스(Table Space) 확장 , 여유공간및 자동확장여부조회 방법 (0) | 2020.01.10 |
[Oracle] PL/SQL(Procedural language/SQL)의 정의와 종류, 기본구조 예제 실습 (0) | 2020.01.08 |