PostgreSQL | psql을 사용하여 PostgreSQL에 연결 | psql 옵션 사용법과 옵션 목록
psql을 실행할 때에 연결에 사용하는 사용자명 및 데이터베이스를 지정하는 옵션 이외에도 몇 가지 옵션을 제공한다. 여기에서 psql을 실행할 때 지정할 수 있는 옵션의 사용법과 옵션의 목록에 대해 설명한다.
psql을 실행할 때에 자주 사용하는 옵션은 PostgreSQL에 연결할 때 사용하는 -h와 -U 옵션이지만, 그외 몇 가지 옵션을 제공하고 있다.
버전 확인
-V 옵션은 PostgreSQL 버전을 표시할 수 있다.
psql -V
C:\>psql -V
psql (PostgreSQL) 12.2
C:\>
옵션 목록 및 도움말 표시
-? 옵션 목록 및 도움말을 표시하는 옵션이다.
C:\>psql -?
psql은 PostgreSQL 대화식 터미널입니다.
사용법:
psql [OPTION]... [DBNAME [USERNAME]]
일반 옵션:
-c, --command=COMMAND 하나의 명령(SQL 또는 내부 명령)만 실행하고 끝냄
-d, --dbname=DBNAME 연결할 데이터베이스 이름(기본 값: "devkuma")
-f, --file=FILENAME 파일 안에 지정한 명령을 실행하고 끝냄
-l, --list 사용 가능한 데이터베이스 목록을 표시하고 끝냄
-v, --set=, --variable=NAME=VALUE
psql 변수 NAME을 VALUE로 설정
(예, -v ON_ERROR_STOP=1)
-V, --version 버전 정보를 보여주고 마침
-X, --no-psqlrc 시작 파일(~/.psqlrc)을 읽지 않음
-1 ("one"), --single-transaction
명령 파일을 하나의 트랜잭션으로 실행
-?, --help[=options] 이 도움말을 표시하고 종료
--help=commands psql 내장명령어(\문자로 시작하는)를 표시하고 종료
--help=variables 특별 변수들 보여주고, 종료
입출력 옵션:
-a, --echo-all 스크립트의 모든 입력 표시
-b, --echo-errors 실패한 명령들 출력
-e, --echo-queries 서버로 보낸 명령 표시
-E, --echo-hidden 내부 명령이 생성하는 쿼리 표시
-L, --log-file=FILENAME 세션 로그를 파일로 보냄
-n, --no-readline 확장된 커멘드 라인 편집 기능을 사용중지함(readline)
-o, --output=FILENAME 쿼리 결과를 파일(또는 |파이프)로 보냄
-q, --quiet 자동 실행(메시지 없이 쿼리 결과만 표시)
-s, --single-step 단독 순차 모드(각 쿼리 확인)
-S, --single-line 한 줄 모드(줄 끝에서 SQL 명령이 종료됨)
출력 형식 옵션:
-A, --no-align 정렬되지 않은 표 형태의 출력 모드
--csv CSV (쉼표-분리 자료) 테이블 출력 모드
-F, --field-separator=STRING
unaligned 출력용 필드 구분자 설정(기본 값: "|")
-H, --html HTML 표 형태 출력 모드
-P, --pset=VAR[=ARG] 인쇄 옵션 VAR을 ARG로 설정(\pset 명령 참조)
-R, --record-separator=STRING
unaligned 출력용 레코드 구분자 설정
(기본 값: 줄바꿈 문자)
-t, --tuples-only 행만 인쇄
-T, --table-attr=TEXT HTML table 태그 속성 설정(예: width, border)
-x, --expanded 확장된 표 형태로 출력
-z, --field-separator-zero
unaligned 출력용 필드 구분자를 0 바이트로 지정
-0, --record-separator-zero
unaligned 출력용 레코드 구분자를 0 바이트로 지정
연결 옵션들:
-h, --host=HOSTNAME 데이터베이스 서버 호스트 또는 소켓 디렉터리
(기본값: "로컬 소켓")
-p, --port=PORT 데이터베이스 서버 포트(기본 값: "5432")
-U, --username=USERNAME 데이터베이스 사용자 이름(기본 값: "devkuma")
-w, --no-password 암호 프롬프트 표시 안 함
-W, --password 암호 입력 프롬프트 보임(자동으로 처리함)
자세한 내용을 보려면 psql 내에서 "\?"(내부 명령) 또는 "\help"(SQL
명령)를 입력하거나 PostgreSQL
설명서에서 psql 섹션을 참조하십시오.
오류보고: <pgsql-bugs@lists.postgresql.org>.
C:\>
결과 표시 방법을 HTML 테이블 태그 사용하도록 지정
psql을 사용하여 PostgreSQL에 접속한 뒤의 표시 방법에 관한 것도 있다. 예를 들면, PostgreSQL에 접속한 후에 데이터베이스를 목록을 표시하면 다음과 같이 표시된다.
C:\>psql -U postgres
postgres 사용자의 암호:
psql (12.2)
도움말을 보려면 "help"를 입력하십시오.
postgres=# \l
데이터베이스 목록
이름 | 소유주 | 인코딩 | Collate | Ctype | 액세스 권한
-----------+----------+--------+------------------+------------------+-----------------------
postgres | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 |
template0 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 | =c/postgres +
| | | | | postgres=CTc/postgres
(3개 행)
postgres=#
-H 옵션을 사용하면 psql을 실행 PostgreSQL에 접속하면 동일한 데이터베이스 목록을 검색하면 HTML 테이블 태그를 사용하여 형식으로 출력할 수도 있다.
C:\>psql -H -U postgres
postgres 사용자의 암호:
psql (12.2)
도움말을 보려면 "help"를 입력하십시오.
postgres=# \l
<table border="1">
<caption>데이터베이스 목록</caption>
<tr>
<th align="center">이름</th>
<th align="center">소유주</th>
<th align="center">인코딩</th>
<th align="center">Collate</th>
<th align="center">Ctype</th>
<th align="center">액세스 권한</th>
</tr>
<tr valign="top">
<td align="left">postgres</td>
<td align="left">postgres</td>
<td align="left">UTF8</td>
<td align="left">Korean_Korea.949</td>
<td align="left">Korean_Korea.949</td>
<td align="left"> </td>
</tr>
<tr valign="top">
<td align="left">template0</td>
<td align="left">postgres</td>
<td align="left">UTF8</td>
<td align="left">Korean_Korea.949</td>
<td align="left">Korean_Korea.949</td>
<td align="left">=c/postgres<br />
postgres=CTc/postgres</td>
</tr>
<tr valign="top">
<td align="left">template1</td>
<td align="left">postgres</td>
<td align="left">UTF8</td>
<td align="left">Korean_Korea.949</td>
<td align="left">Korean_Korea.949</td>
<td align="left">=c/postgres<br />
postgres=CTc/postgres</td>
</tr>
</table>
<p>(3개 행)<br />
</p>
postgres=#
여기서 언급한 데이터베이스 목록을 검색뿐 아니라, 다른 검색도 HTML 형태로 테이블 태그를 사용하여 형식으로 출력이 된다.
postgres=# select now()
postgres-# ;
<table border="1">
<tr>
<th align="center">now</th>
</tr>
<tr valign="top">
<td align="left">2020-03-15 02:30:16.292241+09</td>
</tr>
</table>
<p>(1개 행)<br />
</p>
postgres=#
파일을 이용한 SQL 실행
-f 옵션을 사용하면 파일을 이용해서 SQL를 실행 시킬 수도 있다.
먼저 아래와 같이 SQL 파일을 작성한다.
D:\>copy con file.sql
select now();^Z
1개 파일이 복사되었습니다.
작성한 파일을 아래와 같이 실행시키면 출력 결과를 볼 수 있다.
D:\>psql -U postgres -f file.sql
postgres 사용자의 암호:
now
-------------------------------
2020-03-15 02:39:17.327284+09
(1개 행)
D:\>
–
이와 같이 psql의 옵션에는 여러가지 기능을 제공하고 있기에, 나중에 옵션 목록을 확인하여 무엇을 할 수 있는지를 확인해 두면 유용하게 사용할 수 있을 것이다.
최종 수정 : 2020-11-12