yasql은 현재 sourceforge.net에서 진행중인 프로젝트이다. sql*plus의 불편함을 아는 사람은 다 알것이다. MySQL프롬프트의 history이 얼마나 아쉬웠던가! yasql은 GNU의 readline라이브러와 같은 프롬프트의 히스토리기능을 지원하다. 자세한 사항은 설치시 제공되는 문서를 참조하라.
[주요특징]
Full ReadLine support - 명령어 히스토리 제공
Alternate output methods - 데이터크기에 맞게 컬럼길이 조정 - CSV(Comma Seperated Value format)출력 지원(좋다)
Output of query results - sqlplus의 spool 명령기능
Data Input and Binding - 바인드 변수 사용가능
Command pipes - 외부프로그램에 질의 결과 redirect
Tab completion - 탭완성기능(bash쉘에 있죠)
Easy top rownum listings - where rownum < 10 이렇게 할 필요 없다. select * from table;10 를 사용하라
Enhanced Data Dictionary commands - show tables, desc <tablename>, show indexes on <tablename>, desc <sequence>
Query editing - 지정한 에디터에서 질의 편집가능
Query chaining - 여러개의 질의를 한꺼번에 써놓으면 순서대로 처리해준다.
Basic scripting - 기본적인 질의를 스크립트로 지정가능
먼저 perl이 설치되어 있어야 한다. 리눅스배포본에 perl이 설치되어 있지 않은 것은 없으므로 이 부분의 설명은 생략한다.
perl은 DB연결을 위해 DBI(Database Interface ?)모듈을 필요로 한다. 일종의 ODBC, JDBC와 같은 역활을 DB의 종류에 관계없이 일관된 DB인터페이스를 제공한다. 즉, DB에 구애받지 않고 통일된 DB핸들링을 할 수 있다. DB와의 연결은 DBD(Database Driver)가 처리해준다. 해당 DB에 관계된 DBD가 제공된다. 다음과 같은 구성이 되겠다.
perl - DBI - DBD ORACLE . . DB2
[DBI 설치] 배포본에서 대부분 디폴트로 설치되지 않는다. 아래에서 다운받아서 순서대로 설치한다. 현재 버전은 1.20이다.
ftp://ftp.nuri.net/pub/CPAN/modules/by-module/DBI/DBI-1.20.tar.gz
[kang@dev2 /down]$ wget ftp://ftp.nuri.net/pub/CPAN/modules/by-module/DBI/DBI-1.20.tar.gz [kang@dev2 /down]$ tar xvzf DBI-1.20.tar.gz [kang@dev2 /down]$ cd DBI-1.20 [root@dev2 DBI-1.20]$ perl Makefile.PL [root@dev2 DBI-1.20]$ make [root@dev2 DBI-1.20]$ make test [root@dev2 DBI-1.20]$ make install
[DBD 설치] http://www.perl.com/cgi-bin/cpan_mod?module=DBD::Oracle
[kang@dev2 /down]$ wget http://www.perl.com/cgi-bin/cpan_mod?module=DBD::Oracle [kang@dev2 /down]$ cd DBD-Oracle-1.12 [root@dev2 DBD-Oracle-1.12]$ perl Makefile.PL [root@dev2 DBD-Oracle-1.12]$ make; make test; make install
[Term-ReadLine 설치] [kang@dev2 /down]$ wget http://www.cpan.org/authors/id/ILYAZ/modules/Term-ReadLine-Perl-0.9908.tar.gz [kang@dev2 /down]$ tar xvzf Term-ReadLine-Perl-0.9908.tar.gz [root@dev2 /down]# cd Term-ReadLine-Perl-0.9908 [root@dev2 Term-ReadLine-Perl-0.9908]# perl Makefile.PL [root@dev2 Term-ReadLine-Perl-0.9908]# make [root@dev2 Term-ReadLine-Perl-0.9908]# make test [root@dev2 Term-ReadLine-Perl-0.9908]# make install
[TermReadKey 설치] [root@dev2 /down]# wget http://www.cpan.org/authors/id/J/JS/JSTOWE/TermReadKey-2.15.tar.gz [root@dev2 /down]# cd TermReadKey-2.15 [root@dev2 TermReadKey-2.15]# perl Makefile.PL [root@dev2 TermReadKey-2.15]# make [root@dev2 TermReadKey-2.15]# make test [root@dev2 TermReadKey-2.15]# make install
[Time-HiRes 설치] [root@dev2 /down]# wget http://www.cpan.org/authors/id/DEWEG/Time-HiRes-01.20.tar.gz [root@dev2 /down]# tar xvzf Time-HiRes-01.20.tar.gz [root@dev2 /down]# cd Time-HiRes-01.20 [root@dev2 Time-HiRes-01.20]# perl Makefile.PL [root@dev2 Time-HiRes-01.20]# make [root@dev2 Time-HiRes-01.20]# make test [root@dev2 Time-HiRes-01.20]# make install
[Text-CSV_XS 설치] [root@dev2 /down]# wget http://www.cpan.org/authors/id/JWIED/Text-CSV_XS-0.23.tar.gz [root@dev2 /down]# tar xvzf Text-CSV_XS-0.23.tar.gz [root@dev2 /down]# cd Text-CSV_XS-0.23 [root@dev2 Text-CSV_XS-0.23]# perl Makefile.PL [root@dev2 Text-CSV_XS-0.23]# make [root@dev2 Text-CSV_XS-0.23]# make test [root@dev2 Text-CSV_XS-0.23]# make install
[yasql]설치 rpm설치 [kang@dev2 /down]$ wget http://prdownloads.sourceforge.net/yasql/yasql-1.80-1.noarch.rpm or 소스컴파일 [root@dev2 /down]# tar xvzf yasql-1.80.tar.gz [root@dev2 /down]# cd yasql-1.80 [root@dev2 yasql-1.80]# ./configure [root@dev2 yasql-1.80]# make
[yasql]사용 쉘에서 yasql을 입력하여 실행할 수 있다. 실제 사용예를 보자.
[kang@dev2 kang]$ yasql kang/xxxxxx perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "ko" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
YASQL version Copyright (c) 2000-2001 Ephibian, Inc. $Id: yasql,v 1.80 2001/08/01 18:06:27 nshafer Exp nshafer $ Please type 'help' for usage instructions
Attempting connection to local database Connected to: Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
AutoCommit is OFF, CommitOnExit is ON kang@dev2> select * from tab;
TNAME TABTYPE CLUSTERID ----------- ------- --------- BONUS TABLE NULL DEPT TABLE NULL DUMMY TABLE NULL EMP TABLE NULL EXT_TEST TABLE NULL PLAN_TABLE TABLE NULL SALGRADE TABLE NULL STUDENT TABLE NULL S_CUSTOMER TABLE NULL S_DEPT TABLE NULL S_EMP TABLE NULL S_IMAGE TABLE NULL S_INVENTORY TABLE NULL S_ITEM TABLE NULL S_LONGTEXT TABLE NULL S_ORD TABLE NULL S_PRODUCT TABLE NULL S_REGION TABLE NULL S_TITLE TABLE NULL S_WAREHOUSE TABLE NULL TBLMESSAGE TABLE NULL TEMP_TABLE TABLE NULL TEST TABLE NULL VAR_TABLE TABLE NULL X TABLE NULL
25 rows selected (0.00 seconds)
kang@dev2> exit Quitting... Committing any outstanding transaction...
자세한 내용(?)은 man yasql이 설명해 줄 것이다.
그런데 auto completion이 안되었다. Perl에 관련된 문제인거 같은데.. 나중에 해결하자
PERL관련 사이트 http://www.perl.org http://dbi.perl.org http://www.perl.co.kr
|
This article comes from dbakorea.pe.kr (Leave this line as is)
|