pgbash 사용법
예전에도 pgbash 에 대한 글을 접하고서 사용해 보려고 했지만 실패하고 말았다. 지금 생각해 보면 왜 그랬는지 몰라도 컴파일에서 실패했었던 것 같다.
이번에 새로이 컴파일을 시도해 보았지만 역시 실패였다. DSN 서버 관리자님이신 이운억님께 도움을 청했더니 너무도 어이가 없이 쉽게 해결법을 제시해 주어 이렇게 컴파일/설치/사용법에 대해서 올리고자 한다.
pgbash 라고 하는 것은 bash shell 에서 직접적으로 PostgreSQL 로 접근이 가능하도록 패치를 가한 프로그램으로서, bash 의 shell scripting 능력에다가 psql 과 유사한 기능을 bash 에 추가한 것으로서, 이보다 더 좋은 PostgreSQL client 프로그램을 없다고 생각할 정도로 편리하다.
즉 bash shell script 내부에서 PostgreSQL 의 디비의 내용을 불러 쓰고 필요한 경우 디비 수정 작업도 shell script 로서 손쉽게 할수 있다고 가정해 보라. 편리하지 않겠는가? 가장 간단한 예로 다음을 보자.
[advance@database advance$] select * from users; | egrep ^ad.ance.*
이런식으로 필터링 프로그램도 사용할 수 있다. 이 정도면 어느 정도의 편리성이 있을지는 알수 있을 것으로 생각하고 설치방법을 알아보도록 하자.
pgbash 의 설치
이 글은 pgbash-2.2 와 bash-2.0.5 를 기반으로 설치하는 과정을 설명 하도록 하겠다.
1. pgbash 를 설치하기 전에 PostgreSQL-6.5/7.0/7.1 이 미리 설치되어 있어야 한다. 이 과정은 여기서 생략하도록 하며, PostgreSQL 은 /usr/local/pgsql 디렉토리에 설치된 것으로 가정하겠다.
2. 만약 PostgreSQL 이 /usr/local/pgsql 에 설치되어 있지 않다면 root 로서 /usr/local/pgsql 디렉토리를 만들고 PostgreSQL Include 와 lib 디렉토리를 그 아래로 link 를 걸어서 만들어 주도록 한다.
su -
cd /usr/local
mkdir pgsql
cd pgsql
ln -s xxx/pgsql/lib .
ln -s xxx/pgsql/include .
여기서 xxx/pgsql 이라는 것은 PostgreSQL 이 실제로 설치되어 있는 디렉토리를 말한다.
3. pgbash-2.2 와 bash-2.0.5 를 다운로드 받는다.
wget ftp://ftp.psn.ne.jp/pub/PostgreSQL/pgbash/pgbash-2.2.tar.gz
wget ftp://ftp.gnu.org/gnu/bash/bash-2.05.tar.gz
4. pgbash 와 bash 의 압축을 푼다.
tar xvfz pgbash-2.2.tar.gz
cd pgbash-2.2
tar xvfz yyy/bash-2.0.5.tar.gz
물론 여기서 yyy 는 bash-2.0.5 가 다운로드 받아져 있는 디렉토리를 말한다.
여기까지 진행했으면 다음과 같은 디렉토리 구조를 가지게 될 것이다.
-rw-r--r-- 1 pgbash postgres 2842 Apr 18 19:04 ChangeLog
-rw-r--r-- 1 pgbash postgres 7245 Apr 18 19:04 INSTALL
-rw-r--r-- 1 pgbash postgres 4404 Apr 18 19:04 README
drwxr-xr-x 10 pgbash postgres 3584 Apr 21 16:15 bash-2.05/
drwxr-xr-x 4 pgbash postgres 1024 Apr 21 16:14 exec_sql/
lrwxrwxrwx 1 pgbash postgres 9 Apr 20 11:05 patch@ -> patch-2.05
drwxr-xr-x 2 pgbash postgres 512 Apr 21 17:18 patch-2.03/
drwxr-xr-x 2 pgbash postgres 512 Apr 21 17:18 patch-2.04/
drwxr-xr-x 2 pgbash postgres 512 Apr 21 17:18 patch-2.05/
-rw-r--r-- 1 pgbash postgres 3301 Apr 21 09:28 pgbashrc
lrwxrwxrwx 1 pgbash postgres 9 Apr 20 11:05 src@ -> bash-2.05
drwxr-xr-x 4 pgbash postgres 512 Apr 19 17:11 test/
5. 이제 bash-2.0.5 에 패치를 한다.
cd patch-2.0.5
make
이때 bash 버전에 따라 patch 디렉토리가 따로 있으므로 혹시 다운로드 받은 bash 소스의 버전이 다를 경우 다른 patch 버전을 선택하도록 한다. 그리고 patch 의 결과는 make.log 파일에 저장되어 있으므로 필요할 경우 참조하도록 한다.
6. confiugre
cd ../bash-2.0.5
./configure
7. make (GNU make)
make 과정에서 컴파일 실패하는 경우가 많다. 예전에 나도 그래서 컴파일을 못했었는데, 그 이유는 어이 없게도 환경변수 탓이었다. 가끔 compile 시에 최적화를 이해서 필요한 CFLAG 환경변수를 미리 설정해 두는 경우가 있는데 이 경우 이 CFLAG 의 영향으로 제대로 컴파일이 되지 않는 경우가 있다. 이런 경우에는 미리 CFLAG 의 값을 없애고 make 과정을 거치기 바란다.
unset CFLAG
make
8. make install
이제 root 권한으로서 make install 을 실행하도록 하자.
su
make install
제대로 설치가 된 경우라면 다음과 같은 메시지가 보일 것이다.
pgbash-2.2/bash-2.0.5/pgbash ===> /usr/local/bin/pgbash
pgbash-2.2/pgbashrc ===> /etc/pgbashrc
만약 여러분들이 Unix 의 super user 로서 작업하는 것이 아니라면 이들 pgbash 와 pgbashrc 파일을 자신의 디렉토리로 복사해 넣도록 한다.
cp pgbash ~/bin/pgbash
cp pgbashrc ~/.pgbashrc
이제까지의 동작으로 여러분들은 pgbash 를 사용할 준비가 다 되었다. 이제는 아래 설치 설명 항목들은 대부분의 PostgreSQL 사용자들은 설정되어 있는 상황이므로 그렇게 걱정할 필요가 없을 것 같다. 단지 참조만 하시기 바란다.
9. 환경설정
1. ~/.bashrc 설정하기
대체로 다음과 같이 설정되어 있어야 한다.
# ~/.bashrc
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export LD_LIBRARY_PATH=$PGLIB
export PATH=/usr/local/bin:/usr/local/pgsql/bin:$PATH
export PGCLIENTENCODING= 'EUC_KR'
2. ~/.pgbashrc 설정하기
/etc/pgbashrc 를 ~/.pgbashrc 로 복사하여 자신의 환경에 맞게 적정하게 수정해야 한다.
3. 환경 설정의 확인
prompt> /usr/local/bin/pgbash
Welcome to Pgbash version 2.2 ( bash-2.05.0(1)-release )
Type '?' for HELP. (HELP is defined in ~/.pgbashrc)
Type 'connect to DB;' before executing SQL.
Type 'SQL;' to execute SQL.
Type 'exit' or 'Ctrl+D' to terminate Pgbash.
pgbash> ?
? : this help
?? : help pgbash usage
??h [SQL] : help SQL(or "SQL") syntax or all SQL reserved words
??e : help SQLCODE (sql ERROR code)
??f : help 'pgbashrc' FUNCTIONs for using a shell script
??o : help 'exec_sql' options
?m : show CONNECTION NAMEs
....
이제 전반적인 pgbash 의 설치는 모두 끝났다. 사용만 하면 되는 것이다.
만약 /etc/pgbashrc 를 ~/.pgbashrc 로 복사만 하였다면 ? 라는 명령어를 주면 help 화면을 볼수 있다.
[pgbash]~> ?
? : this help
?? : help pgbash usage
??h [SQL] : help SQL(or "SQL") syntax or all SQL reserved words
??e : help SQLCODE (sql ERROR code)
??f : help 'pgbashrc' FUNCTIONs for using a shell script
??o : help 'exec_sql' options
?m : show CONNECTION NAMEs
?o : show current values of exec_sql_OPTIONs
?s : show STATUS after executing SQL
?v : show PostgreSQL and pgbash VERSION
?u : list database USERs
?l : list DATABASEs
?d [rel] : list RELATIONs for table/view/index/sequence
?d : list TABLEs/INDEXes/VIEWs
?dl : list LARGE_OBJECTs
?dp : list PERMISSIONs
?ds : list SEQUENCEs
?dA : list AGGREGATEs
?dD [obj] : list DESCRIPTIONs for table/type/function/operator
?dF : list FUNCTIONs
?dO : list OPERATORs
?dS : list SYSTEM_TABLEs
?dT : list data_TYPEs
E : turn on/off ECHO_QUERY sent to the backend
Q : turn on/off QUIET_MODE for system/sql error messages
L : turn on/off OUTER_FRAME_print
T : turn on/off TOP_header_print
B : turn on/off BOTTOM_count_print
A : turn on/off ALIGNMENT of plain text
X : turn on/off EXPANDED format
H : turn on/off HTML format
S+ [chr] : set SEPARATOR (e.g. ',' ) or DEFAULT('|')
N+ [str] : set NULL_STRING(e.g. '*N*') or DEFAULT('')
Z+ [str] : set ZERO_STRING(e.g. '*0*') or DEFAULT('')
O+ [str] : set TABLE TAG (e.g. 'cellpadding=4') or DEFAULT('')
_lo_import : lo_import <'COMMENT'>
_lo_export : lo_export
_lo_unlink : lo_unlink
이제 pgbash 로 또다른 세상을 맛보시기 바랍니다.
|