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 ~;
실습
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 에 변수 전달
'프로N잡러 > 프로그래밍&자격증' 카테고리의 다른 글
[GPDB] 4-2.Data Definition Language(DDL) : Distribution (1) | 2024.01.09 |
---|---|
[GPDB] 4-1. Data Definition Language(DDL) : Table (0) | 2024.01.09 |
[GPDB] 3. Role & Access (인증, 권한 관리) (1) | 2024.01.09 |
[GPDB] 2. DB Instance (DB, Schema) (0) | 2024.01.09 |
[GPDB] 0. System Architecture (시스템 아키텍처) (0) | 2024.01.09 |