강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
YASQL
조회 : 3,512  


YASQL

 


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)

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=758


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
강명규
홈페이지 : http://dbakorea.pe.kr/

e-mail : myunggyu골뺑이orgio.net