728x90

OSQL 이란 도스나 콘솔상에서 SQL 문을 실행할수 있게 하는 프로그램이다. 주로 쿼리문 실행할라면 쿼리분석기, EM 을 이용하는데 어떤 경우에는 도스로 쿼리문을 실행해야 할 경우가 생긴다. 이때 이 OSQL 이란 프로그램을 사용한다.

참고로 나의 테스트 환경은 MS-SQL 7.0이다. SQL 2000도 물론 가능한데 6.5 버젼은 어떤지 모르겠다.그리고 OSQL은 MS-SQL 설치하면 자동으로 설치되는 프로그램이다. 환경변수로 잡혀있으므로 그냥 도스상 어느 디렉토리에서도 OSQL 실행 가능하다.(Copy가 명령어 어디서든지 가능한것 처럼)

간단한 OSQL 사용

자 그럼 사용해 보자. 사용법은 간단하다. 일단 도스창을 연 후 아래의 구문을 실행해 보자. 그럼 다음과 같은 결과가 보일것이다.

osql -Usa -P -Q "select * from Northwind..Region"

구문을 살펴보자 아래를 보면 색으로 구분을 줘서 더 살펴보기 쉬울꺼다.그래도 굳이 설명하자면 -U는 사용자, -P는 암호, -Q는 쿼리문이다. 따라서 아래 구문을 해석하면 'sa란 사용자로(암호는 없음) select * from Northwind..Region 쿼리문을 실행해라' 라고 볼 수 있다.

주의 : -U, -P 등 플래그들은 대소문자를 구분한다.!!

osql -Usa -P -Q "select * from Northwind..Region"

방금전 구문은 로컬 DB에 엑서스 했을 경우이다. 다른 네트워크 상의 DB 내용을 보려면 다음과 같이 하면 된다.

osql -Smungchung -Usa -P1234 -Q "select * from Northwind..Region"

위의 구문을 보면 -Smungchung 이 추가됨을 알 수 있다. -S는 서버 플래그를 나타내고 mungchung는 서버명을 나타낸다. 해석해 보자면 'mungchung란 서버에 아이디 sa 암호 1234로 로그인 한 후 select * from Northwind..Region 쿼리문을 실행시켜라' 이다.

파일을 이용한 OSQL

지금까지는 아주 단순한 쿼리문을 실행했는데 쿼리문이 길어진다고 하면 어떻게 할까? 도스창에서 그 길고긴 쿼리들 다 적기는 무리일 것이다. -_-; (오타라도 하나 나면 -_-;; 수정하기 쉽지 않다.)여기 osql에 i라는 플래그가 있다. 입력 파일 플래그를 뜻하는데 이 플래그를 사용하면 파일의 내용을 실행한다.

메모장으로 다음 내용을 입력한 후 test.sql 이라는 파일명으로 저장한다. (확장자는 사실 아무거나 해도 상관없다.test.txt로 해도 아무 상관 없다. 하지만 sql 확장자가 쿼리분석기에서 사용되므로 확장자를 sql로 하였다.)

USE NorthWind
SELECT a.ProductID, b.SupplierID, a.ProductName, b.CompanyName
FROM Products a
JOIN Suppliers b
	ON a.SupplierID = b.SupplierID
WHERE a.ProductID < 4

도스나, 콘솔창을 연 후 다음 구문을 실행한다.

osql -Usa -P -i d:\test.sql

OSQL 응용 범위

osql은 단순히 도스상에서 sql명령어 이용하라고 만들어진것은 아니다. 요새 도스 이용하는 사람도 없는데 왜 이 osql이 MS-SQL 버젼이 높아져도 없어지지 않을까? 솔직히 나도 100%로 왜 그런지는 모르지만 어디서 유용하게 쓰이는지는 안다.얄팍한 경험으로 비춰보면 osql은 다른 시스템간에 인터페이스 할때 이용되거나 백업할때 이용된다. 이 osql을 이용할경우 도스로 배치스크립트 작성해서 매일 매일 해야하는 작업이나 주단위 작업등을 간편하고 빠르게 해결 할수 있다. 나중에 기회가 된다면 이 osql을 좀더 멋지게 이용하는 방법을 적어보겠다.

OSQL 구문

다음은 osql 에서 사용되는 구문이다. 몇가지 빠진 플래그들이 있지만 다음에 나온는 플래그들만 해도 충분할것이다. ( [] 로 묶여진 플래그들은 생략 가능한 플래그다.) 좀더 자세하게 osql 에 대해서 알고자 한다면 도움말을 참고하기 바란다.

osql 
	-U<로그인ID>
	[-d]
	[-Q"쿼리문"]
	[-q"쿼리문"]
	[-c<명령종료자"]
	[-h<헤더들>]
	[-w<열너비>]
	[-s<열구분기호>]
	[-t<제한시간>]
	[-m<오류수준>]
	[-H<워크스테이션이름>]
	[-P<암호>]
	[-S<서버이름>]
	[-i<입력파일>]
	[-o<출력파일>]
	[-a<패킷크기>]
	[-l<제한시간>]

*) 참고도서 : Professional SQL Server 2000 Programming (Wrox.) 437p

 

출처 : http://www.mungchung.com/xe/lecture/4100

+ Recent posts