본문 바로가기
프로N잡러/프로그래밍&자격증

[GPDB] 1. 서버 명령어 (DB제어 & PSQL)

by 뮤지구 2024. 1. 9.

DB 제어 명령어

-- start greenplum
> gpstart

--stop greenplum
> gpstop

--reload greenplum configuration (pg_hba.conf 등 설정 파일 변경되는 경우, 내리는 것 아님)
> gpstop -u

--check the status of greenplum
> gpstate
> gpstate -f 
> gpstate -m

--check postgres process (postgres기반이기 때문에 프로세스가 gp가 아님)
> ps -ef | grep 'postgres -D'
 

DB 사용을 위한 명령어 (PSQL)

--interactive mode
psql {dbname}
{dbname}=# SELECT * FROM foo;

--non-interactive mode (single command)
psql {dbname} -ac "SELECT * FROM foo;"

--non-interactive mode (multiple commands - file read)
psql {dbname} -af /home/gpadmin/sql/sample.sql
psql {dbname} -v ON_ERROR_STOP=1 -af /home/gpadmin/sql/sample.sql ☆

--unloading small data set (don't use psql to offload large amounts of data)
psql -Atf sample.sql -d {dbname} -o /home/gpadmin/data.txt

--pass a scalar value into a shell variable
VAR=`psql -Atf file.sql`; echo $VAR
 

☆ 주의 

만약, sample.sql 내에 여러 sql 문이 있고 중간에 syntax error 가 있다면 오류가 발생한 sql문을 제외하고 모두 실행된다.

이 때, -v ON_ERROR_STOP=1 을 사용하여 psql 실행하면 오류났을 때 sql 실행을 멈추게 된다.

ex) insert ~; select ~; update ~;

psql 옵션
PSQL Metadata 명령어

실습

1.psql 접속 (interactive mode)

$ psql testdb

2.SQL 구문 도움말

testdb=# \h

3. SELECT 구문에 대한 상세 도움말

testdb=# \h SELECT

4. psql 메타 명령어에 대한 도움말

testdbb=# \?

 5. 스키마 리스트

testdb=# \dn[+]

 6. 테이블 리스트

testdb=# \dt
testdb=# \dt * --시스템 pg_~ 도 모두 조회됨

7. 특정 이름의 테이블 리스트 조회 및 컬럼 정보 출력

testdb=# \dt * 
testdb=# \d pg_database
testdb=# \d+ pg_database

8. 뷰 리스트 및 뷰 컬럼 정보 출력

testdb=# \dv
testdb=# \dv *
testdb=# \dv *part*
testdb=# \d pg_partition

9. 유저(롤) 리스트

testdb=# \du

10. 데이터베이스 리스트

testdb=# \l
testdb=# \l+

11.psql 종료

edu20db=# \q

 12. non-interactive mode 로 psql 사용

$ psql testdb -c 'SELECT * FROM gp_segment_configuration order by 1'

 13. 쿼리의 결과를 파일로 저장

$ psql -c 'show all' -o exp_show_all.lst testdb
$ psql -Atc 'show all' -o exp_show_all.lst testdb --데이터 전달 시 유용, 공백 없앰 (대용량에는 사용x)

 

14. 저장된 쿼리 파일을 실행

$ vi test.sql
select count(*) from information_schema.views;
\timing --"Timing is on. 로그가 적히고 쿼리 수행된 시간이 적힘
select count(*) from information_schema.views;

$ psql -f test.sql testdb

15.파라매터를 전달하여 저장된 쿼리 파일을 실행

$ vi test_param.sql
select * from information_schema.tables where table_name like :param2;

$ psql -v param2="'%config%'" -f test_param.sql testdb --param2 에 변수 전달