도구

클라이언트 도구

Agens

Agens는 AgensGraph의 터미널 기반 프론트엔드입니다. 쿼리를 대화식으로 입력하면 AgensGraph가 그 결과를 반환합니다. 파일이나 명령줄 인수를 입력할 수도 있습니다. 또한 Agens는 다양한 메타 명령과 셸 유사 기능을 제공하여 스크립트를 작성하고 여러 작업을 자동화합니다.

사용 방법:

agens [OPTION]... [DBNAME [USERNAME]]

옵션

-a
–echo-all
모든 입력 라인을 읽는 대로 표준 출력으로 표시합니다(대화식으로 읽지 않음). 이는 ECHO 변수를 all로 설정하는 것과 동일합니다.

-A
–no-align
정렬되지 않은 출력 모드로 전환합니다(그렇지 않으면 기본 출력 모드는 정렬됨).

-b
–echo-errors
실패한 SQL 명령을 표준 오류 출력으로 표시합니다. 이는 ECHO 변수를 error로 설정하는 것과 동일합니다.

-c command
–command=command
agens가 지정된 명령 문자열을 실행하도록 command를 지정합니다. 이 옵션은 반복하여 사용할 수 있으며 -f 옵션과 명령을 조합하여 사용할 수 있습니다. -c 또는 -f가 지정되면 agens는 명령을 표준 입력으로 읽지 않고 모든 -c와 -f 옵션을 처리한 후 종료합니다.

command는 서버가 완전히 파싱할 수 있는 명령 문자열이거나 단일 백슬래시 명령이어야 합니다. 따라서 -c 옵션에서는 SQL과 agens 메타 명령을 혼합할 수 없습니다. -c 옵션을 반복하여 사용하거나 파이프(‘|’)가 포함된 문자열을 사용할 수 있습니다. 예시:

agens -c '\ x'-c 'SELECT * FROM test;'

또는

echo '\x \\SELECT * FROM test;' | agens

(\\는 구분자 메타 명령입니다.)

-c에 전달된 각 SQL 명령 문자열은 단일 쿼리로 서버에 전송됩니다. 이러한 이유로 문자열에 여러 트랜잭션으로 분할될 수 있는 명시적인 BEGIN/COMMIT 명령이 포함되어 있지 않으면, 서버는 문자열에 여러 SQL 명령이 있더라도 이를 단일 트랜잭션으로 실행합니다. 또한 Agens는 문자열의 마지막 SQL 명령 결과만 출력합니다. 여기서는 표준 입력이 별도로 전송되므로, 이 동작은 agens의 표준 입력으로 전송될 때나 동일한 문자열을 파일에서 읽을 때의 동작과는 다릅니다.

이러한 동작 때문에 단일 -c 문자열에 둘 이상의 명령을 두면 예기치 않은 결과가 발생하는 경우가 많습니다. -c 명령을 반복하여 사용하거나, 위 예시처럼 echo를 사용하거나, 아래 예시처럼 here-document 셸을 사용하여 agens 표준 입력에 여러 명령을 입력하는 것이 좋습니다.

psql <<EOF
\x
SELECT * FROM test;
EOF

-d dbname
–dbname=dbname
연결할 데이터베이스의 이름을 지정합니다. 이는 명령줄의 첫 번째 옵션이 아니라 인수로 dbname을 지정하는 것과 동일합니다.

이 매개변수에 등호(=) 기호가 있거나 유효한 URI 접두사(postgresql:// 또는 postgres://)로 시작하면, conninfo 문자열로 처리됩니다.

-e
–echo-queries
서버로 전송되는 모든 SQL 명령을 표준 출력으로 복사합니다. 이는 쿼리에서 변수 ECHO를 설정하는 것과 동일합니다.

-E
–echo-hidden
ECHO_HIDDEN 변수를 on으로 켜는 것과 동일합니다.

-f filename
–file=filename
표준 입력이 아니라 filename이 지정된 파일에서 명령을 읽습니다. 이 옵션은 반복할 수 있으며 -c 옵션을 사용하여 순서대로 조합할 수 있습니다. -c 또는 -f를 지정하면 agens는 명령을 표준 입력으로 읽지 않습니다. 대신 모든 -c와 -f 옵션을 순서대로 처리한 후 종료합니다. 이를 제외하면, 이 옵션은 일반적으로 메타 명령 \i와 동일합니다.

filename이 -(하이픈)이면 표준 입력은 EOF 또는 메타 명령 \q까지 읽습니다. 이를 통해 대화식 입력과 파일로부터의 입력 간에 상호작용이 가능합니다. 그러나 이 경우 Readline은 사용되지 않습니다(-n이 지정된 것처럼).

이 옵션을 사용하는 것은 agens < filename을 사용하는 것과 약간 다릅니다. 일반적으로 둘 다 예상대로 작동하지만, -f를 사용하면 라인 번호가 포함된 오류 메시지와 같은 유용한 기능을 사용할 수 있습니다. 이 옵션은 시작 오버헤드를 줄여 줄 수 있습니다. 반면, 셸의 입력 리디렉션을 사용하는 방식은 모든 것을 수동으로 입력했을 때 받는 입력과 (이론적으로) 동일한 출력을 보장합니다.

-F separator
–field-separator=separator
정렬되지 않은 출력의 필드 구분자로 separator를 사용합니다. 이는 \pset fieldsep 또는 \f와 동일합니다.

-h hostname
–host=hostname
서버가 실행 중인 시스템의 호스트 이름을 지정합니다. 값이 슬래시로 시작하면 Unix 도메인 소켓의 디렉터리로 사용됩니다.

-H
–html
HTML 테이블 형식 출력을 켭니다. 이는 \pset format html 또는 \H 명령과 동일합니다.

-l
–list
사용 가능한 모든 데이터베이스를 나열하고 종료합니다. 연결과 관련되지 않은 다른 옵션은 무시됩니다. 메타 명령 \list와 유사합니다.

-L filename
–log-file=filename
모든 쿼리 로그를 filename에 생성합니다.

-n
–no-readline
확장 명령줄 편집을 사용하지 않습니다.

-o filename
–output=filename
모든 쿼리 결과를 filename 파일에 저장합니다. 이는 \o 명령과 동일합니다.

-p port
–port=port
서버가 연결을 수신하는 TCP 포트 또는 로컬 Unix 도메인 소켓 파일 확장자를 지정합니다. 기본값은 PGPORT 환경 변수의 값이거나, 설정되지 않은 경우 컴파일 시 지정된 값입니다(기본값: 5432).

-P assignment
–pset=assignment
출력 옵션을 \pset 스타일로 지정합니다. 이름과 값은 공백 대신 등호로 구분해야 합니다. 예를 들어 출력 형식을 LaTeX로 설정하려면 -P format=latex를 사용합니다.

-q
–quiet
agens를 조용히 작동시키려면 이 옵션을 지정합니다. 기본적으로 시작 메시지와 다양한 정보를 출력합니다. 이 옵션을 활성화하면 아무 것도 출력되지 않습니다. 이는 -c 옵션과 함께 사용할 때 유용합니다. QUIET 변수를 켜는 것과 동일합니다.

-R separator
–record-separator=separator
정렬되지 않은 출력의 레코드 구분자로 separator를 사용합니다. 이는 \pset recordsep 명령과 동일합니다.

-s
–single-step
단일 단계 모드로 실행합니다. 즉, 각 명령이 서버로 전송되기 전에 사용자에게 메시지가 표시되며, 취소 옵션도 표시됩니다. 스크립트를 디버깅하는 데 사용됩니다.

-S
–single-line
세미콜론과 마찬가지로, 단일 라인 모드에서는 줄바꿈 문자가 실행되어 SQL 명령을 종료합니다.

주의: 이 모드는 사용하기를 원하는 사용자를 위해 제공되며 기본적으로 사용을 권장하지 않습니다. 특히 단일 라인에 SQL과 메타 명령을 혼합하면 처음 사용하는 사용자에게는 실행 순서가 명확하지 않을 수 있습니다.

-t
–tuples-only
열 이름과 결과 행 출력을 끕니다. 이는 \t 명령과 동일합니다.

-T table_options
–table-attr=table_options
HTML 테이블 태그 안에 배치할 옵션을 지정합니다. 자세한 내용은 \pset을 참조하십시오.

-U username
–username=username
기본값 대신 username으로 데이터베이스에 연결합니다(필요한 권한이 있어야 합니다).

-v assignment
–set=assignment
–variable=assignment
메타 명령 \set과 동일한 변수 할당을 수행합니다. 이름과 값이 있으면 명령줄에서 등호로 구분해야 합니다. 변수를 해제하려면 등호만 남겨 두십시오. 변수를 빈 값으로 설정하려면 등호를 사용하고 값을 그대로 두십시오. 시작 초기 단계에 할당/실행되지만 내부 사용을 위해 예약된 변수는 나중에 덮어쓸 수 있습니다.

-V
–version
agens 버전 정보를 표시하고 종료합니다.

–revision
agens 리비전 정보를 표시하고 종료합니다.

-w
–no-password
암호를 입력하지 않습니다. 서버에서 암호 인증이 필요하고 .pgpass 파일과 같은 다른 방법으로도 암호를 사용할 수 없는 경우, 연결 시도는 실패합니다. 이 옵션은 암호를 입력할 사용자가 없는 배포 작업이나 스크립트에 유용합니다.

이 옵션은 전체 세션에 대해 설정되므로, 초기 연결 시도뿐만 아니라 메타 명령 \connect의 사용에도 영향을 줍니다.

-W
–password
데이터베이스에 연결하기 전에 agens가 강제로 암호를 요청하도록 설정합니다.

이 옵션은 서버에서 암호 인증을 요구할 때는 필요하지 않습니다. agens가 자동으로 암호를 요구하기 때문입니다. 그러나 agens는 서버가 암호를 원하는지 알기 위해 연결 시도를 낭비하게 됩니다. 경우에 따라 추가 연결 시도를 피하기 위해 -W를 입력하는 것이 좋습니다.

이 옵션은 전체 세션에 대해 설정되므로, 초기 연결 시도뿐만 아니라 메타 명령 \connect의 사용에도 영향을 줍니다.

-x
–expanded
확장 표현식 할당 모드를 켭니다. 이는 \w 명령과 동일합니다.

-X
–no-psqlrc
시작 파일(시스템의 psqlrc 파일 또는 사용자의 .psqlrc 파일)을 읽지 않습니다.

-z
–field-separator-zero
정렬되지 않은 출력의 필드 구분자를 0바이트로 설정합니다.

-0
–record-separator-zero
정렬되지 않은 출력의 레코드 구분자를 0바이트로 설정합니다. 예를 들어 xargs -0과 같은 인터페이스에 유용합니다.

-1
–single-transaction
이 옵션은 하나 이상의 -c 및 / 또는 -f 옵션과 함께 사용해야 합니다.

이 옵션은 먼저 BEGIN을 실행하고 마지막에 COMMIT을 실행하여 모든 명령을 단일 트랜잭션으로 래핑합니다. 이를 통해 모든 명령이 성공적으로 완료되거나 변경 사항이 적용되지 않도록 보장합니다.

명령 자체에 BEGIN, COMMIT 또는 ROLLBACK을 포함하면, 이 옵션은 의도한 효과를 낼 수 없습니다. 또한 트랜잭션 블록 내에서 개별 명령을 실행할 수 없는 경우, 이 옵션을 지정하면 전체 트랜잭션이 실패하게 됩니다.

-?
–help[ =options ]
agens에 대한 도움말을 표시하고 종료합니다. 선택적 options 매개변수(선택적 기본값)는 설명할 agens의 부분을 선택합니다. commands는 agens의 백슬래시 명령을 설명하고, options는 agens에 전달할 수 있는 명령줄 옵션을 설명합니다. variables는 agens 구성 변수에 대한 도움말을 표시합니다.

종료 상태

Agens는 셸이 성공적으로 완료되면 0을 반환하고, 치명적인 내부 오류(예: 메모리 부족, 파일을 찾을 수 없음)가 있으면 1을 반환합니다. Agens는 서버에 대한 잘못된 연결로 인해 세션이 대화식이 아니면 2를 반환하고, 스크립트에 오류가 있고 변수 ON_ERROR_STOP이 설정되어 있으면 3을 반환합니다.

사용법

데이터베이스에 연결

Agens는 범용 AgensGraph 클라이언트 애플리케이션입니다. 데이터베이스에 연결하려면 대상 데이터베이스의 이름, 서버의 호스트 이름과 포트 번호, 연결할 사용자 이름을 알아야 합니다. Agens는 -d, -h, -p, -U와 같은 명령줄 옵션을 통해 각 매개변수를 지정할 수 있습니다. 옵션에 속하지 않는 인수가 발견되면 데이터베이스 이름(데이터베이스 이름이 이미 지정된 경우 사용자 이름)으로 해석됩니다. 이러한 옵션이 모두 필요한 것은 아니며 유용한 기본값이 있습니다. 호스트 이름을 생략하면 agens는 Unix 도메인 소켓을 통해 로컬 호스트의 서버에 연결하거나, Unix 도메인 소켓이 없는 시스템에서는 TCP/IP를 통해 localhost에 연결합니다. 기본 포트 번호는 컴파일 시 결정됩니다. 데이터베이스 서버가 동일한 기본값을 사용하므로 대부분의 경우 포트(번호)를 지정할 필요가 없습니다. 기본 사용자 이름은 운영체제 사용자 이름이며 기본 데이터베이스 이름도 동일합니다. 사용자 이름만으로는 임의의 데이터베이스에 연결할 수 없습니다. 데이터베이스 관리자는 사용자에게 접근 권한을 알려야 합니다.

기본값이 적절하지 않은 경우, PGDATABASE, PGHOST, PGPORT 및/또는 PGUSER 환경 변수에 적절한 값을 설정하여 사용하십시오. 암호를 정기적으로 입력하고 싶지 않다면 ~/.pgpass 파일을 사용하는 것이 편리합니다.

SQL 명령 입력

일반적으로 agens는 현재 연결된 데이터베이스의 이름을 제공합니다. 추가로 수퍼유저에게는 “=#”를, 일반 사용자에게는 “=#”라는 문자열을 제공합니다. 다음은 예시입니다:

agens testdb
agens (AgensGraph 2.17.0, based on PostgreSQL 17.10)
Type "help" for help.

testdb=#

프롬프트에서 사용자는 SQL 명령을 입력할 수 있습니다. 일반적으로 명령줄 끝의 세미콜론에 도달하면 입력 라인이 서버로 전송됩니다. 라인의 끝은 명령을 종료하지 않습니다. 따라서 명확성을 위해 명령을 여러 라인에 걸쳐 분산할 수 있습니다. 명령이 전송되어 오류 없이 실행되면 명령의 결과가 화면에 표시됩니다.

명령이 실행될 때마다 agens는 LISTEN과 NOTIFY에 의해 생성된 비동기 알림 이벤트를 폴링합니다.

C 스타일 블록 주석은 처리 및 제거를 위해 서버로 전달되지만, SQL 표준 주석은 agens에 의해 제거됩니다.

메타 명령

(agens에 입력된) 따옴표로 묶이지 않은 백슬래시로 시작하는 것은 agens 자체에서 처리하는 agens 메타 명령입니다. 이 명령은 관리나 스크립팅에 agens를 더욱 유용하게 만들어 줍니다. 메타 명령은 보통 슬래시 또는 백슬래시 명령이라고 합니다.

agens 명령의 형식: 백슬래시 뒤에 명령 동사와 인수가 옵니다. 인수는 여러 개의 다양한 공백 문자로 명령 동사와 구분됩니다.

인수에 공백 문자를 포함하려면 작은따옴표를 사용하십시오. 인수에 작은따옴표를 포함하려면 작은따옴표 안에 작은따옴표 두 개를 넣어야 합니다. 작은따옴표로 묶인 문자열에는 \n(줄바꿈), \t(탭), \B(백스페이스), \r(캐리지 리턴), \f(폼 피드), \digits(8진수), \xdigits(16진수)가 포함될 수 있습니다. 작은따옴표로 묶인 텍스트에서 다른 문자 앞에 오는 백슬래시는 해당 문자가 무엇이든 그대로 표현합니다.

인수 내에서 백틱(`)으로 묶인 텍스트는 셸에 전달되는 명령줄로 간주됩니다. 명령의 출력(뒤따르는 줄바꿈이 제거됨)이 백틱 안의 텍스트를 대체합니다.

따옴표 없이 콜론(:) 뒤에 agens 변수 이름이 나타나면, SQL 보간에 설명된 대로 변수 값으로 대체됩니다.

일부 명령은 SQL 식별자(예: 테이블 이름)를 인수로 사용합니다. 이 인수는 SQL 구문 규칙을 따릅니다. 따옴표로 묶이지 않은 문자는 소문자로 처리되며, 큰따옴표(“)는 대소문자 전환을 방지하고 식별자에 공백을 포함시킵니다. 큰따옴표 안의 큰따옴표는 하나의 큰따옴표로 축소됩니다. 예를 들어 FOO”BAR”BAZ는 fooBARbaz로 해석되고 “A weird”” name”은 A weird” name이 됩니다.

인수 파싱은 라인의 끝에 도달하거나 따옴표 없이 또 다른 백슬래시를 만나면 중지됩니다. 따옴표 없는 백슬래시는 새 메타 명령의 시작으로 간주됩니다. 특수 시퀀스 \\(백슬래시 두 개)는 인수의 끝을 표시합니다. SQL 명령이 있으면 파싱을 계속합니다. 이를 통해 단일 라인에 SQL과 agens 명령을 혼합할 수 있습니다. 그러나 어떤 경우에도 메타 명령은 라인의 끝을 넘어 계속될 수 없습니다.

다음과 같은 메타 명령이 정의되어 있습니다.

\a
현재 테이블 출력 형식이 정렬되지 않은 경우, 정렬된 형식으로 전환됩니다. 정렬되지 않은 형식이 아니면 정렬되지 않은 형식으로 설정됩니다. 이 명령은 하위 호환성을 위해 유지됩니다.

\c or \connect [ -reuse-previous=on|off ] [ dbname [ username ] [ host ] [ port ] | conninfo ]

AgensGraph 서버에 대한 새 연결을 설정합니다. 사용할 연결 매개변수는 위치 구문 또는 conninfo 연결 문자열을 사용하여 지정할 수 있습니다.

명령에서 데이터베이스 이름, 사용자, 호스트 또는 포트를 생략하면, 새 연결은 이전 연결의 값을 재사용할 수 있습니다. 기본적으로 conninfo 문자열을 처리할 때를 제외하고는 이전 연결의 값이 재사용됩니다. 첫 번째 인수로 -reuse-previous=on 또는 -reuse-previous=off를 전달하면 이 기본값을 변경할 수 있습니다. 명령에서 특정 매개변수를 지정하거나 재사용하지 않으면 libpq 기본값이 사용됩니다. dbname, username, host, port를 빈 값으로 지정하는 것은 해당 매개변수를 생략하는 것과 동일합니다.

새 연결이 성공하면 이전 연결은 닫힙니다. agens가 대화식 모드에 있을 때 연결 시도가 실패하면(잘못된 사용자 이름, 접근 거부 등) 이전 연결만 유지됩니다. 비대화식 스크립트를 실행할 때 오류가 발생하면 처리가 즉시 중지됩니다. 이 기능은 오타가 발생한 경우 사용자 편의를 위해 선택되었으며, 스크립트가 실수로 다른 데이터베이스에서 작동하지 않도록 하는 안전 장치로도 선택되었습니다.

다음은 예시입니다:

db=# \c mydb myuser skai 5555
db=# \c service=mydb
db=# \c "host=localhost port=5555 dbname=mydb connect_timeout=10 sslmode=disable"
db=# \c postgresql://myuser@localhost/mydb?application_name=myapp

\C [ title ]
쿼리 결과로 표시되는 모든 테이블의 제목을 설정하거나 지웁니다. 이 명령은 \pset title title과 동일합니다(이 명령의 이름은 이전에 HTML 테이블에서 캡션을 설정하는 데 사용되었기 때문에 “caption”에서 유래했습니다).

\cd [ directory ]
현재 작업 디렉터리를 directory로 변경합니다. 인수가 없으면 현재 사용자의 홈 디렉터리로 변경됩니다.

팁: 현재 작업 디렉터리는 \! pwd를 입력하여 확인할 수 있습니다.

\conninfo
현재 데이터베이스 연결에 대한 정보를 표시합니다.

\copy { table [ ( column_list ) ] | ( query ) } { from | to } { ‘filename’ | program ‘command’ | stdin | stdout | pstdin | pstdout } [ [ with ] ( option [, …] ) ]

프론트엔드(클라이언트) 복사를 수행합니다. 이는 SQL COPY 명령을 실행하는 작업입니다. 그러나 지정된 파일을 읽거나 쓰는 대신, 서버와 로컬 파일 시스템 사이에서 데이터를 읽거나 씁니다. 파일 접근과 권한은 (서버가 아닌) 로컬 사용자의 접근 권한이며, SQL 수퍼유저 권한은 필요하지 않습니다.

program이 지정되면 명령은 agens에 의해 실행되어 서버와 클라이언트 사이에서 전달되거나 명령 사이에서 라우팅됩니다. 실행 권한은 서버가 아닌 로컬 사용자의 실행 권한이며, SQL 수퍼유저 권한은 필요하지 않습니다.

\copy ... from stdin의 경우, 명령이 실행된 소스에서 데이터 행을 읽으며 \. 또는 EOF를 만날 때까지 읽습니다. 이 옵션은 SQL 스크립트 파일에서 인라인 테이블을 채우는 데 유용합니다. \copy ... to stdout의 경우, 출력은 agens 명령 출력이 향하는 위치로 전송되며 COPY 개수 명령 상태는 표시되지 않습니다(데이터 행과 혼동될 수 있기 때문). 현재 명령 소스나 \o와 무관하게 agens의 표준 입력 또는 출력을 읽거나 쓰려면 pstdin 또는 pstdout을 사용하십시오.

이 명령의 구문은 SQL COPY 명령과 유사합니다. 데이터 소스/대상을 제외한 모든 옵션은 COPY에서 지정하는 것과 동일합니다. 이러한 이유로 \copy 명령에는 특별한 파싱 규칙이 적용되며, agens의 치환 규칙과 백슬래시 이스케이프는 적용되지 않습니다.

팁: 모든 데이터가 클라이언트/서버 연결을 통과해야 하므로 이는 SQL COPY 명령만큼 효율적이지 않습니다. 대용량 데이터에는 SQL 명령이 더 효율적이고 좋을 수 있습니다.

\copyright
AgensGraph의 저작권 및 배포 조건을 표시합니다.

\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]
현재 쿼리 버퍼(예: \g)를 실행하고 결과를 크로스탭 그리드로 표시합니다. 쿼리는 최소 세 개의 열을 반환해야 합니다. colV로 식별되는 출력 열은 세로 헤더이고 colH로 식별되는 출력 열은 가로 헤더입니다. colD는 그리드에 표시할 출력 열을 식별합니다. sortcolH는 가로 헤더의 선택적 정렬 열을 식별합니다.

각 열 사양은 (1부터 시작하는) 열 번호이거나 열 이름일 수 있습니다. 일반적인 SQL 대소문자 축소 및 따옴표 규칙이 열 이름에 적용됩니다. 생략하면 colV는 열 1이 되고 colH는 열 2가 됩니다. colH와 colV는 달라야 합니다. colD가 지정되지 않으면 쿼리 결과에 정확히 세 개의 열이 있어야 하며, colV 또는 colH가 아닌 열이 colD로 표시됩니다.

왼쪽 상단에 표시되는 세로 헤더에는 쿼리 결과와 동일한 순서로 해당 열에서 발견된 값이 포함되지만 중복은 제거됩니다.

첫 번째 행에 표시되는 가로 헤더에는 중복이 제거된 colH 열의 값이 포함됩니다. 기본적으로 이들은 쿼리 결과와 동일한 순서로 나타납니다. 그러나 선택적 sortcolH 인수가 주어지면 그 값은 정수여야 하며, colH 값은 sortcolH 값에 따라 정렬되어 가로 헤더에 표시됩니다.

크로스탭 그리드에서 colH의 x 값과 colV의 y 값이 명확하면, 교차점 (x, y)의 셀에는 쿼리 결과 행(colH 열 값= x이고 colV 값= y)의 colD 열 값이 포함됩니다. 그러한 열이 없으면 빈 셀을 반환합니다. 여러 행이 있으면 오류가 발생합니다.

\d[S+] [ patterns ]
각 릴레이션 유형(테이블, 뷰, 구체화된 뷰, 인덱스, 시퀀스, 외래 테이블) 또는 patterns와 일치하는 유형에 대해, 모든 열에 해당하는 열, 타입, 기본값(기본값이 아닌 경우), NULL 여부가 표시됩니다. 관련된 인덱스, 제약 조건, 규칙, 트리거도 표시됩니다. 외래 테이블의 경우 관련된 외래 서버도 표시됩니다(“패턴 매칭”은 아래 패턴에서 정의됩니다).

일부 릴레이션 유형의 경우, \d는 시퀀스의 열 값, 인덱스의 인덱스 표현식, 외래 테이블의 외래 데이터 래퍼 옵션과 같은 각 열에 대한 추가 정보를 표시합니다.

\d+ 명령 형식은 더 많은 정보가 표시된다는 점을 제외하면 동일합니다. 테이블의 OID를 포함하여 테이블의 열과 관련된 모든 주석이 표시됩니다. 관련이 없으면 기본 복제본 ID 설정이 표시됩니다.

기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다.

참고: \d를 패턴 인수 없이 사용하면 \dtvmsE와 동일합니다. 테이블, 뷰, 구체화된 뷰, 시퀀스, 외래 테이블의 목록이 표시됩니다.

\da[S] [ pattern ]
집계 함수를 반환 타입 및 처리할 데이터 타입과 함께 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 집계 함수만 표시됩니다. 기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다.

\dA[+] [ pattern ]
접근 방법을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 접근 방법만 표시됩니다. 명령 이름에 +를 추가하면 각 접근 방법이 디스크 크기, 권한, 설명과 관련된 옵션과 함께 나열됩니다.

\db[+] [ pattern ]
테이블스페이스를 나열합니다. pattern이 지정되면 패턴과 일치하는 테이블스페이스 이름만 표시됩니다. 명령 이름에 +를 추가하면 각 테이블스페이스가 디스크 크기, 권한, 설명과 관련된 옵션과 함께 나열됩니다.

\dc[S+] [ pattern ]
문자 집합 인코딩 간의 변환을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 변환만 나열됩니다. 기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다. 명령 이름에 +를 추가하면 관련 설명이 있는 객체가 나열됩니다.

\dC[+] [ pattern ]
캐스팅 유형을 나열합니다. pattern이 지정되면 소스 또는 대상 타입의 패턴과 일치하는 캐스팅만 나열됩니다. 명령 이름에 +를 추가하면 관련 설명이 있는 객체가 나열됩니다.

\dd[S] [ pattern ]
타입 제약 조건, 연산자 클래스, 연산자 패밀리, 규칙, 트리거 객체의 설명을 나열합니다. 다른 모든 주석은 해당 객체 유형의 백슬래시 명령으로 볼 수 있습니다.

\dd는 pattern과 일치하는 객체나 인수가 제공되지 않으면 적절한 유형의 가시적 객체에 대한 설명을 표시합니다. 그러나 두 경우 모두 설명이 있는 객체만 나열됩니다. 기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다.

객체에 대한 설명은 COMMENT SQL 명령을 사용하여 생성할 수 있습니다.

\ddp [ pattern ]
기본 접근 권한 설정을 나열합니다. 내장 기본값에서 변경된 각 롤(해당하는 경우 스키마)에 대한 항목이 나열됩니다. patterns가 지정되면 롤 이름이나 스키마 이름이 패턴과 일치하는 항목만 나열됩니다.

기본 접근 권한을 설정하려면 ALTER DEFAULT PRIVILEGES 명령을 사용합니다. 표시되는 권한의 의미는 GRANT에 설명되어 있습니다.

\dD[S+] [ pattern ]
도메인을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 도메인만 표시됩니다. 기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다. 명령 이름에 +를 추가하면 관련 설명이 있는 객체가 나열됩니다.

\dE[S+] [ pattern ]
\di[S+] [ pattern ]
\dm[S+] [ pattern ]
\ds[S+] [ pattern ]
\dt[S+] [ pattern ]
\dv[S+] [ pattern ]
이 명령 그룹에서 문자 E, i, m, s, t, v는 각각 외래 테이블, 인덱스, 구체화된 뷰, 시퀀스, 테이블, 뷰를 나타냅니다. 이러한 문자의 일부 또는 전부를 임의의 순서로 지정하여 해당 유형 객체의 목록을 얻을 수 있습니다. 예를 들어 \dit는 인덱스와 테이블을 나열합니다. 명령 이름에 +를 추가하면 각 객체가 디스크 크기, 권한, 설명과 관련된 옵션과 함께 나열됩니다. patterns가 지정되면 패턴과 일치하는 이름의 객체만 나열됩니다. 기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다.

\des[+] [ pattern ]
외부 서버를 나열합니다(연상 기호: “external servers”). pattern이 지정되면 이름이 일치하는 서버만 나열됩니다. \des 형식을 사용하면 서버의 ACL, 유형, 버전, 옵션, 설명을 포함하여 각 서버에 대한 전체 설명도 볼 수 있습니다.

\det[+] [ pattern ]
외부 테이블을 나열합니다(연상 기호: “external tables”). pattern이 지정되면 테이블 이름이나 스키마 이름이 패턴과 일치하는 항목만 나열됩니다. \det+ 형식을 사용하면 외부 테이블의 일반 옵션과 설명도 볼 수 있습니다.

\deu[+] [ pattern ]
사용자 매핑을 나열합니다(연상 기호: “external users”). pattern이 지정되면 패턴과 일치하는 사용자 이름의 매핑만 나열됩니다. \deu+ 형식을 사용하면 각 매핑에 대한 추가 정보 목록도 볼 수 있습니다.

주의: \deu+는 원격 사용자의 사용자 이름과 암호도 표시할 수 있습니다. 이를 노출하지 않도록 주의하십시오.

\dew[+] [ pattern ]
외부 데이터 래퍼를 나열합니다(연상 기호: “external wrappers”). pattern이 지정되면 패턴과 일치하는 외부 데이터 래퍼만 나열됩니다. \dew+ 형식을 사용하면 외부 데이터 래퍼의 ACL, 옵션, 설명도 볼 수 있습니다.

\df[antwS+] [ pattern ]
함수를 결과 데이터 타입, 인수 데이터 타입, “agg”(집계), “normal”, “trigger”, “window”로 분류된 함수 유형과 함께 나열합니다. 특정 유형의 함수만 표시하려면 명령에 해당 문자 a, n, t 또는 w를 추가하십시오. pattern이 지정되면 패턴과 일치하는 이름의 함수만 표시됩니다. 기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다. \df+ 형식을 사용하면 가변성, 병렬 안전성, 소유자, 보안 분류, 접근 권한, 언어, 소스 코드, 설명을 포함하여 각 함수에 대한 추가 정보를 볼 수 있습니다.

팁: 특정 데이터 형식의 인수를 받거나 값을 반환하는 함수를 찾으려면, 페이저의 검색 기능을 사용하여 \df 출력을 스크롤하십시오.

\dF[+] [ pattern ]
전문 검색 설정을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 설정만 표시됩니다. \dF+ 형식을 사용하면 기본 전문 검색 파서와 각 구문에 대한 토큰 유형 사전 목록을 포함하여 각 설정에 대한 전체 설명을 볼 수 있습니다.

\dFd[+] [ pattern ]
전문 검색 사전을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 사전만 표시됩니다. \dFd+ 형식을 사용하면 기본 전문 검색 템플릿과 옵션 값을 포함하여 선택된 각 사전에 대한 추가 정보를 볼 수 있습니다.

\dFp[+] [ pattern ]
전문 검색 파서를 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 파서만 표시됩니다. \dFp+ 형식을 사용하면 기본 기능 목록과 인식되는 토큰 유형을 포함하여 각 파서에 대한 전체 설명을 볼 수 있습니다.

\dFt[+] [ pattern ]
전문 검색 템플릿을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 템플릿만 표시됩니다. \dFt+ 형식을 사용하면 기본 기능 이름을 포함하여 각 템플릿에 대한 추가 정보를 볼 수 있습니다.

\dg[S+] [ pattern ]
데이터베이스 롤을 나열합니다. (“사용자”와 “그룹”의 개념이 “롤”로 통합되었으므로 이는 이제 \du와 동일합니다). 기본적으로 사용자가 생성한 롤만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다. pattern이 지정되면 패턴과 일치하는 이름의 롤만 나열됩니다. \dg+ 형식을 사용하면 각 롤에 대한 추가 정보를 볼 수 있습니다(현재 이는 각 롤에 대한 설명을 추가합니다).

\dG[+] [ pattern ]
그래프 목록을 표시합니다.

\dGe[+] [ pattern ]
그래프의 간선 레이블 목록을 표시합니다.

\dGl[+] [ pattern ]
그래프의 레이블 목록을 표시합니다.

\dGv[+] [ pattern ]
그래프의 정점 레이블 목록을 표시합니다.

\dGi[+] [ pattern ]
그래프의 속성 인덱스 목록을 표시합니다.

\di[S+] [ pattern ]
인덱스 목록을 표시합니다.

\dl
이는 대형 객체 목록을 표시하는 \lo_list의 별칭입니다.

\dL[S+] [ pattern ]
절차적 언어를 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 언어만 나열됩니다. 기본적으로 사용자가 생성한 언어만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다. 명령 이름에 +를 추가하면 언어가 각각의 호출 핸들러, 검증기, 접근 권한, 시스템 객체 여부와 함께 나열됩니다.

\dn[S+] [ pattern ]
스키마(네임스페이스)를 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 스키마만 표시됩니다. 기본적으로 사용자가 생성한 언어만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다. 명령 이름에 +를 추가하면 각 객체가 관련 권한 및 설명(있는 경우)과 함께 나열됩니다.

\do[S+] [ pattern ]
연산자를 피연산자 및 결과 타입과 함께 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 연산자만 표시됩니다. 기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다. 명령 이름에 +를 추가하면 각 연산자에 대한 추가 정보가 표시됩니다(현재 기본 기능의 이름만 표시됨).

\dO[S+] [ pattern ]
정렬 규칙(collation)을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 정렬 규칙만 나열됩니다. 기본적으로 사용자가 생성한 언어만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다. 명령 이름에 +를 추가하면 정렬 규칙이 각각의 설명과 함께 나열됩니다. 현재 데이터베이스의 인코딩에서 사용할 수 있는 정렬 규칙만 표시되므로, 동일하게 설치된 다른 데이터베이스에서 얻는 결과와 다를 수 있습니다.

\dp [ pattern ]
테이블, 뷰, 시퀀스와 관련된 접근 권한을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 테이블, 뷰, 시퀀스만 나열됩니다.

접근 권한을 설정하려면 GRANT와 REVOKE 명령을 사용합니다. 표시되는 권한의 의미는 GRANT에 설명되어 있습니다.

\drds [ role-pattern [ database-pattern ] ]
정의된 구성 설정을 나열합니다. 이러한 설정은 롤별, 데이터베이스별 또는 둘 다일 수 있습니다. role-pattern과 database-pattern은 각각 특정 롤과 데이터베이스를 선택하는 데 사용됩니다. 이 옵션이 생략되거나 +가 지정되면, 지정되지 않은 각 롤별 또는 데이터베이스별 구성을 포함하여 모든 설정이 나열됩니다.

롤별 및 데이터베이스별 구성 설정을 정의하려면 ALTER ROLE과 ALTER DATABASE 명령을 사용합니다.

\dT[S+] [ pattern ]
데이터 타입을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 타입만 나열됩니다. 명령 이름에 +를 추가하면 모든 타입이 각각의 내부 이름과 크기(즉, enum 타입과 관련된 권한이 있는 값)와 함께 나열됩니다. 기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다.

\du[S+] [ pattern ]
데이터베이스 롤을 나열합니다. (“사용자”와 “그룹”의 개념이 “롤”로 통합되었으므로 이 명령은 \dg와 동일합니다). 기본적으로 사용자가 생성한 객체만 표시되며, 시스템 객체를 포함하려면 패턴이나 S 한정자를 제공합니다. pattern이 지정되면 패턴과 일치하는 이름의 롤만 표시됩니다. \du+ 형식을 사용하면 각 롤에 대한 추가 정보를 볼 수 있습니다(현재 이는 각 롤에 대한 설명을 추가합니다).

\dx[+] [ pattern ]
설치된 익스텐션을 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 익스텐션만 나열됩니다. \dx+ 형식을 사용하면 일치하는 각 익스텐션에 속한 모든 객체를 볼 수 있습니다.

\dy[+] [ pattern ]
이벤트 트리거를 나열합니다. pattern이 지정되면 패턴과 일치하는 이름의 이벤트 트리거만 나열됩니다. 명령 이름에 +를 추가하면 객체가 관련 설명과 함께 나열됩니다.

\e or \edit [ filename ] [ line_number ]
filename이 지정되면 파일이 편집되고 편집기가 닫히며 내용이 다시 쿼리 버퍼로 복사됩니다. filename이 지정되지 않으면 현재 쿼리 버퍼가 동일한 방식으로 편집되는 임시 파일로 복사됩니다.

새 쿼리 버퍼는 agens의 일반 규칙에 따라 다시 파싱됩니다. 여기서 전체 버퍼는 단일 라인으로 처리됩니다(이 방식으로는 스크립트를 만들 수 없으므로 \i를 사용하십시오). 즉, 세미콜론으로 끝나는 쿼리는 즉시 실행됩니다. 그렇지 않으면 쿼리 버퍼에서 대기합니다. 세미콜론을 입력하거나 \g 또는 \r을 눌러 취소하십시오.

라인 번호를 지정하면 agens는 파일 또는 쿼리 버퍼의 지정된 라인에 커서를 놓습니다. 숫자 인수가 하나만 주어지면 agens는 이를 파일 이름이 아니라 라인 번호로 간주합니다.

팁: 편집기 구성 및 사용자 정의 지침은 아래의 [환경]을 참조하십시오.

\echo text [ … ]
인수를 단일 공백으로 구분하여 (표준 출력으로) 줄바꿈 문자와 함께 출력합니다. 이는 스크립트 출력에 정보를 삽입하는 데 유용할 수 있습니다. 다음은 예시입니다:

db=# \echo `date`
Tue Oct 26 21:40:57 CEST 1999

첫 번째 인수가 따옴표 없는 -n이면 뒤따르는 줄바꿈이 수행되지 않습니다.

팁: \o 명령을 사용하여 쿼리 출력을 다시 제출하는 경우, 이 명령 대신 \qecho를 사용할 수 있습니다.

\ef [ function_description [ line_number ] ]
이 명령은 CREATE OR REPLACE FUNCTION 명령 형식으로 명명된 함수의 정의를 가져와 편집합니다. 편집은 \edit과 동일한 방식으로 수행됩니다. 편집기가 종료되면 업데이트된 명령이 쿼리 버퍼에서 대기합니다. 세미콜론을 입력하거나 \g 또는 \r을 눌러 취소하십시오.

대상 함수는 이름만으로 지정하거나 이름과 인수(예: foo(integer, text))로 지정할 수 있습니다. 동일한 이름의 함수가 둘 이상 있는 경우 인수 타입을 지정해야 합니다.

함수를 지정하지 않으면 편집을 위해 빈 CREATE FUNCTION 템플릿이 표시됩니다.

라인 번호가 지정되면 agens는 함수 본문의 지정된 라인에 커서를 놓습니다. (함수 본문은 보통 파일의 첫 번째 라인에서 시작하지 않습니다.)

팁: 편집기 구성/사용자 정의에 대한 자세한 내용은 아래의 [환경]을 참조하십시오.

\encoding [ encoding ]
클라이언트 문자 집합 인코딩을 설정합니다. 인수가 없으면 이 명령은 현재 인코딩을 표시합니다.

\ev [ view_name [ line_number ] ]
이 명령은 CREATE OR REPLACE VIEW 명령 형식으로 명명된 뷰의 정의를 가져와 편집합니다. 편집은 \edit과 동일한 방식으로 수행됩니다. 편집기가 종료되면 업데이트된 명령이 쿼리 버퍼에서 대기합니다. 세미콜론을 입력하거나 \g 또는 \r을 눌러 취소하십시오.

뷰를 지정하지 않으면 편집을 위해 빈 CREATE VIEW 템플릿이 표시됩니다.

라인 번호가 지정되면 agens는 뷰 정의의 지정된 라인에 커서를 놓습니다.

\f [ string ]
정렬되지 않은 쿼리 출력의 필드 구분자를 설정합니다. 기본값은 세로 막대(|)입니다. 출력 옵션을 설정하는 일반적인 방법은 \pset을 참조하십시오.

\g [ filename ]
\g [ |command ]
현재 쿼리 입력 버퍼를 서버로 전송하고, 쿼리 결과를 filename에 저장하거나, 파이프(|)의 셸 명령 command로 출력합니다. 파일이나 명령은 실패하거나 데이터를 반환하지 않는 SQL 명령이 아니라 쿼리가 0개 이상의 튜플을 성공적으로 반환할 때만 기록됩니다.

\g는 기본적으로 세미콜론과 동일합니다. 인수가 있는 \g는 \o 명령의 “일회성” 대안입니다.

\gexec 현재 쿼리 입력 버퍼를 서버로 전송한 다음, 쿼리 출력의 각 행의 각 열을 실행할 SQL 문으로 처리합니다. 예를 들어 my_table의 각 열에 인덱스를 생성하려면 다음을 수행해야 합니다:

dbdb=# SELECT format('create index on my_table(%I)', attname)
-# FROM pg_attribute
-# WHERE attrelid = 'my_table'::regclass AND attnum > 0
-# ORDER BY attnum
-# \gexec
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX

생성된 쿼리는 행이 반환되는 순서대로 실행되며, 열이 둘 이상이면 각 행 내에서 왼쪽에서 오른쪽으로 실행됩니다. NULL 필드는 무시됩니다. 생성된 쿼리는 리터럴 처리를 위해 서버로 전송되므로, agens 메타 명령이나 agens 변수 참조를 포함할 수 없습니다. 개별 쿼리가 실패하고 ON_ERROR_STOP이 설정되지 않은 경우, 나머지 쿼리는 계속 실행됩니다. 각 쿼리의 실행에는 ECHO 처리가 적용됩니다. (\gexec를 사용하는 경우 ECHO를 all 또는 queries로 설정하는 것이 좋습니다.) 쿼리 로깅, 단일 단계 모드, 타이밍 및 기타 쿼리 실행 기능도 생성된 각 쿼리에 적용됩니다.

\gset [ prefix ]
현재 쿼리를 입력 버퍼에서 서버로 전송하고 쿼리 결과를 agens 변수에 저장합니다([변수] 참조). 실행할 쿼리는 정확히 한 행을 반환해야 합니다. 행의 각 열은 해당 열과 동일한 별도의 변수에 저장됩니다. 다음은 예시입니다:

db=# SELECT 'hello' AS var1, 10 AS var2
db-# \gset
db=# \echo :var1 :var2
hello 10

prefix가 지정되면 해당 문자열이 쿼리의 열 이름에 추가되어 사용할 변수 이름이 생성됩니다.

db=# SELECT 'hello' AS var1, 10 AS var2
db-# \gset result_
db=# \echo :result_var1 :result_var2
hello 10

열 결과가 NULL이면 변수는 “unset”으로 설정됩니다.

쿼리가 실패하거나 행을 반환하지 않으면 변수는 변경되지 않습니다.

\h or \help [ command ]
지정된 SQL 명령에 대한 구문 도움말을 제공합니다. command가 지정되지 않으면 agens는 도움말 정보를 사용할 수 있는 모든 명령을 나열합니다. command가 별표(*)이면 모든 SQL 명령에 대한 구문 도움말을 표시합니다.

참고: 입력을 간소화하기 위해 여러 단어로 구성된 명령을 따옴표로 묶을 필요는 없습니다. \help alter table과 같이 명령을 입력하는 것을 권장합니다.

\H or \html
HTML 쿼리 출력 형식을 켭니다. HTML 형식이 이미 켜져 있으면 기본 정렬 텍스트 형식으로 다시 전환됩니다. 이 명령은 호환성과 편의를 위해 사용됩니다. 다른 출력 옵션 설정은 \pset을 참조하십시오.

\i or \include filename
파일 filename에서 입력을 읽어 키보드로 입력한 것처럼 실행합니다.

filename이 -(하이픈)이면 표준 입력은 EOF 또는 메타 명령 \q까지 읽습니다. 이를 통해 대화식 입력이 파일로부터의 입력과 상호작용할 수 있습니다. Readline 동작은 최외곽 수준에서 활성화된 경우에만 사용됩니다.

참고: 화면에서 읽은 행을 보려면 변수 ECHO를 all로 설정해야 합니다.

\ir or \include_relative filename
\l[+] or \list[+] [ pattern ]
서버의 데이터베이스를 나열하고 이름, 소유자, 문자 집합 인코딩, 접근 권한을 표시합니다. pattern이 지정되면 패턴과 일치하는 데이터베이스만 표시됩니다. 명령 이름에 +를 추가하면 데이터베이스 크기, 기본 테이블스페이스, 설명도 표시됩니다(크기 정보는 현재 사용자가 연결할 수 있는 데이터베이스에만 제공됩니다).

\lo_export loid filename
데이터베이스의 OID loid를 사용하여 대형 객체를 읽고 filename에 씁니다. 데이터베이스 서버에는 서버의 파일 시스템과 동일한 방식으로 실행 중인 사용자의 권한에 따라 작동하는 서버 함수 lo_export와 미묘한 차이가 있다는 점에 유의하십시오.

팁: 대형 객체의 OID를 찾으려면 \lo_list를 사용하십시오.

\lo_import filename [ comment ]
파일을 AgensGraph 대형 객체로 저장합니다. 필요한 경우 지정된 주석을 사용하십시오. 다음은 예시입니다:

db=# \lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'
lo_import 152801

이 응답은 대형 객체가 객체 ID 152801을 받았음을 나타내며, 이는 향후 생성되는 대형 객체에 접근하는 데 사용할 수 있습니다. 가독성을 보장하기 위해 모든 객체에 사람이 읽을 수 있는 설명을 연결하는 것이 항상 좋습니다. OID와 주석은 \lo_list 명령으로 볼 수 있습니다.

이 명령은 lo_import 서버의 사용자/파일 시스템이 아니라 로컬 파일 시스템에서 로컬 사용자로 작동하므로 서버 측과 약간 다릅니다.

\lo_list
현재 데이터베이스에 저장된 모든 AgensGraph 대형 객체와 제공된 모든 주석의 목록을 표시합니다.

\lo_unlink loid
OID loid를 사용하여 데이터베이스에서 대형 객체를 삭제합니다.

팁: 대형 객체의 OID를 찾으려면 \lo_list를 사용하십시오.

\o or \out [ filename ]
\o or \out [ |command ]
이후의 쿼리 결과를 filename 파일에 저장하거나, 이후의 결과를 셸 command로 저장합니다. 인수가 지정되지 않으면 쿼리 출력이 표준 출력으로 재설정됩니다.

“쿼리 결과”에는 데이터베이스를 조회하는 다양한 백슬래시 명령(예: \d)의 출력뿐만 아니라 모든 테이블, 명령 응답, 데이터베이스 서버의 알림이 포함되며, 오류 메시지는 제외됩니다.

팁: 쿼리 결과 사이에 텍스트 출력을 삽입하려면 \qecho를 사용하십시오.

\p or \print 현재 쿼리 버퍼를 표준 출력으로 인쇄합니다.

\password [ username ]
지정된 사용자의 암호를 변경합니다(기본값은 현재 사용자). 이 명령은 새 암호를 입력하라는 프롬프트를 표시하고, 이를 암호화하여 ALTER ROLE 명령과 함께 서버로 전송합니다. 새 암호는 명령 기록, 서버 로그 또는 다른 어떤 곳에도 기록되지 않습니다.

\prompt [ text ] name
변수 name에 할당할 텍스트를 입력하라는 프롬프트가 사용자에게 표시됩니다. 선택적 프롬프트 문자열인 text를 지정할 수 있습니다(여러 단어로 된 메시지의 경우 텍스트를 작은따옴표로 묶습니다).

기본적으로 \prompt는 입출력에 터미널을 사용합니다. 그러나 -f 명령줄 스위치를 사용하려면 \prompt는 표준 입출력을 사용합니다.

\pset [ option [ value ] ]
이 명령은 쿼리 결과 테이블의 출력에 영향을 주는 옵션을 설정합니다. option은 설정할 옵션을 나타냅니다. value의 의미는 선택한 옵션에 따라 달라집니다. 일부 옵션의 경우 value를 생략하면 해당 옵션에 설명된 대로 옵션이 지정되거나 해제됩니다. 동작이 지정되지 않고 value가 생략되면 현재 설정이 표시됩니다.

인수가 없는 \pset은 모든 출력 옵션의 현재 상태를 표시합니다.

조정 가능한 인쇄 옵션은 다음과 같습니다:

  • border
    value는 숫자여야 합니다. 일반적으로 숫자가 클수록 테두리와 선이 많아집니다. 그러나 세부 사항은 특정 형식에 따라 다릅니다. HTML 형식에서는 border= 속성으로 직접 변환됩니다. 대부분의 형식에서는 0(테두리 없음), 1(내부 구분선), 2(테이블 프레임)만 의미가 있으며, 2보다 큰 값은 border=2와 동일하게 처리됩니다. 그러나 latex와 latex-longtable에서는 값 3은 데이터 행 사이에 구분선을 추가할 수 있음을 의미합니다.

  • columns
    columns는 wrapped 형식의 대상 너비와 출력이 페이저로 전환하거나 확장 자동 모드에서 세로 표시로 전환하기에 충분한지를 결정하는 너비 제한을 설정합니다. 0(기본값)은 대상 너비가 COLUMNS 환경 변수에 의해 제어되거나 COLUMNS가 설정되지 않은 경우 감지된 화면 너비를 제어합니다. columns가 0이면 wrapped 형식은 화면 출력에만 영향을 줍니다. columns가 0이 아니면 파일과 파이프 출력도 해당 너비로 래핑됩니다.

  • expanded (or x)
    value가 지정되면 확장 모드를 활성화 또는 비활성화하기 위해 on/off 또는 auto로 설정해야 합니다. value가 생략되면 on/off 설정으로 전환됩니다. 확장 모드에서는 쿼리 결과가 두 개의 열로 표시됩니다. 열 이름은 왼쪽에 있고 데이터는 오른쪽에 표시됩니다. 이 모드는 일반적인 “가로” 상태에서 데이터가 화면에 맞지 않을 때 유용합니다. auto 설정의 확장 모드는 쿼리 출력에 하나 이상의 열이 있고 그것이 화면보다 넓을 때마다 사용됩니다. 다른 경우에는 일반 모드가 사용됩니다. 자동 설정은 aligned 및 wrapped 형식에서만 유효합니다. 다른 형식은 항상 확장 모드가 꺼진 것처럼 동작합니다.

  • fieldsep
    fieldsep은 정렬되지 않은 출력 형식으로 사용할 필드 구분자를 지정합니다. 이를 통해 다른 프로그램이 자체적인 탭 구분 또는 쉼표 구분 출력을 생성할 수 있습니다. 탭을 필드 구분자로 설정하려면 \pset fieldsep '\t'를 입력하십시오. 기본 필드 구분자는 '|'입니다.

  • fieldsep_zero
    fieldsep_zero는 정렬되지 않은 출력 형식의 필드 구분자를 0바이트로 설정합니다.

  • footer
    value가 지정되면 테이블 푸터(n rows)의 합계를 활성화 또는 비활성화하기 위해 on/off로 설정해야 합니다. 값이 생략되면 푸터 표시를 켜거나 끕니다.

  • format
    format은 출력 형식을 unaligned, aligned, wrapped, html, asciidoc, latex(tabular 사용), latex-longtable, troff-ms로 설정합니다. 각 형식에 고유한 약어가 허용됩니다(한 글자면 충분합니다).\

    unaligned는 한 행의 모든 열을 현재 활성화된 필드 구분자로 구분하여 사용합니다. 이 기능은 다른 프로그램이 읽을 수 있는 출력(예: 탭 구분 또는 쉼표 구분 형식)을 생성하는 데 유용합니다. aligned 형식은 사람이 읽을 수 있는 표준 형식의 텍스트 출력입니다(기본값). wrapped 형식은 aligned와 비슷해 보이지만, 출력을 대상 열 너비에 맞추기 위해 넓은 데이터 값을 여러 라인에 걸쳐 래핑합니다. 대상 너비는 columns 옵션에 설명된 대로 결정됩니다. agens에서는 열 이름은 래핑을 시도하지 않습니다. 따라서 열 헤더에 필요한 전체 너비가 대상을 초과하면 wrapped 형식은 aligned와 동일하게 동작합니다. html, asciidoc, latex, latex-longtable, troff-ms 형식은 각각의 마크업을 사용하여 문서에 포함할 수 있는 테이블을 생성합니다. 이들은 완전한 문서가 아닙니다. HTML에는 필요하지 않을 수 있지만 LaTeX는 완전한 문서 래퍼가 필요합니다. Latex-longtable은 LaTeX longtable과 booktabs 패키지도 필요합니다.

  • linestyle
    테두리 선 그리기 스타일을 ascii, old-ascii, unicode 중 하나로 설정합니다. 각 형식에 고유한 약어가 허용됩니다(한 글자면 충분합니다). 기본 설정은 ascii입니다. 이 옵션은 aligned 및 wrapped 출력 형식에만 영향을 줍니다. ascii 스타일은 일반 ASCII 문자를 사용합니다. 데이터의 줄바꿈은 오른쪽 여백에 + 기호를 사용하여 표시됩니다. wrapped 형식이 줄바꿈 문자 없이 한 라인에서 다른 라인으로 데이터를 래핑하면, 첫 번째 라인의 오른쪽 여백과 점선 라인의 왼쪽 여백에 점(.)이 나타납니다. old-ascii 스타일은 이전 버전에서 사용된 서식 스타일과 함께 일반 ASCII 문자를 사용합니다. 데이터의 줄바꿈 문자는 왼쪽 열 구분자 대신 : 기호를 사용하여 표시됩니다. 줄바꿈 없이 데이터가 한 라인에서 다른 라인으로 래핑되면 왼쪽 열 구분자 대신 ; 기호가 사용됩니다. Unicode 스타일은 Unicode 박스 그리기 문자를 사용합니다. 데이터의 줄바꿈은 오른쪽 여백에 캐리지 리턴 기호를 사용하여 표시됩니다. 줄바꿈 문자 없이 데이터가 한 라인에서 다른 라인으로 래핑되면, 첫 번째 라인의 오른쪽 여백과 다음 라인의 왼쪽 여백에 줄바꿈이 표시됩니다. border 설정이 0보다 크면 linestyle 옵션은 테두리 선을 그리는 문자도 결정합니다. 일반 ASCII 문자는 어디에서나 사용할 수 있지만, Unicode 문자는 문자 인식 디스플레이에서 더 잘 보입니다.

  • null
    null 값 대신 인쇄할 문자열을 설정합니다. 기본값은 아무 것도 인쇄하지 않는 것이며, 이는 빈 문자열로 오인될 수 있습니다. 예를 들어 \pset null '(null)'을 권장합니다.

  • numericlocale
    value가 지정되면 로캘별 숫자 표기법을 활성화 또는 비활성화하기 위해 on 또는 off여야 합니다. 이 value가 생략되면 표준 형식과 로캘별 숫자 출력 사이를 전환합니다.

  • pager
    쿼리 및 agens 도움말 출력에 대한 페이저 프로그램 사용을 제어합니다. 환경 변수에 PAGER가 설정되어 있으면 출력이 지정된 프로그램 형식으로 표시됩니다. 그렇지 않으면 플랫폼 종속 기본값(예: more)이 사용됩니다. 페이저 옵션이 off이면 페이저 프로그램이 사용되지 않습니다. 페이저 옵션이 on이면 화면에 맞지 않는 페이저 출력이 적절하게 사용될 수 있습니다. 화면에 맞는지 여부와 관계없이 모든 터미널에서 페이저를 사용할 수 있도록 페이저 옵션을 always로 활성화할 수도 있습니다. value 없이 \pset pager를 사용하면 페이저 사용이 켜지고 꺼집니다.

  • pager_min_lines
    pager_min_lines가 페이지 높이보다 큰 숫자로 설정되면, 최소한 이 출력 라인 수가 표시되지 않는 한 페이저 프로그램이 호출되지 않습니다. 기본 설정은 0입니다.

  • recordsep
    정렬되지 않은 출력 형식으로 사용할 레코드(라인) 구분자를 지정합니다. 기본값은 줄바꿈 문자입니다.

  • recordsep_zero
    정렬되지 않은 출력 형식으로 사용할 레코드 구분자를 0바이트로 설정합니다.

  • tableattr (or T)
    HTML 형식은 테이블 태그 안에 배치할 속성(예: cellpadding 또는 bgcolor)을 지정합니다. \pset border가 이미 처리되었으므로 여기에서 border를 지정하지 않는 것이 좋습니다. 값이 지정되지 않으면 테이블 속성이 구성되지 않습니다. latex-longtable 형식은 왼쪽 정렬 데이터 타입을 포함하는 각 열의 비례 너비를 제어합니다. 이는 공백으로 구분된 값 목록(예: “0.2 0.2 0.6”)으로 지정됩니다. 지정되지 않은 출력 열은 마지막으로 지정된 값을 사용합니다.

  • title (or C)
    나중에 인쇄할 테이블의 제목을 설정합니다. 출력 설명 태그를 제공하는 데 사용할 수 있습니다. 값이 지정되지 않으면 제목이 구성되지 않습니다.

  • tuples_only (or t)
    value가 지정되면 튜플 전용 모드를 활성화 또는 비활성화하기 위해 on 또는 off여야 합니다. value가 생략되면 표준 형식과 튜플 전용 모드 출력 사이를 전환합니다. 일반 출력에는 열 헤더, 제목, 다양한 푸터와 같은 추가 정보가 포함됩니다. 튜플 전용 모드에서는 실제 테이블 데이터만 표시됩니다.

  • unicode_border_linestyle
    Unicode 선 스타일에서 테두리 그리기 스타일을 single 또는 double로 설정합니다.

  • unicode_column_linestyle
    Unicode 선 스타일에서 열 그리기 스타일을 single 또는 double로 설정합니다.

  • unicode_header_linestyle
    Unicode 선 스타일에서 헤더 그리기 스타일을 single 또는 double로 설정합니다.

팁: \pset에 대한 다양한 단축 명령이 있습니다. \, \C, \H, \t, \T, \X를 참조하십시오.

\q or \quit
agens를 종료합니다. 스크립트 파일에서는 스크립트의 실행만 종료됩니다.

\qecho text [ … ]
이 명령은 \echo와 동일하지만, 출력이 \o에서 설정한 쿼리 출력 채널에 기록됩니다.

\r or \reset
쿼리 버퍼를 재설정(해제)합니다.

\s [ filename ]
agens의 명령줄 기록을 filename으로 인쇄합니다. filename이 생략되면 기록이 표준 출력에 기록됩니다(해당하는 경우 페이저 사용). 이 명령은 agens가 Readline 지원 없이 빌드된 경우 사용할 수 없습니다.

\set [ name [ value [ … ] ] ]
agens 변수 name을 value로 설정하거나, 둘 이상의 값이 주어지면 모든 값으로 설정합니다. 인수가 하나만 주어지면 변수가 빈 값으로 설정됩니다. 변수를 해제하려면 \unset 명령을 사용하십시오.

인수가 없는 \set은 현재 agens에 설정된 모든 이름과 값을 표시합니다.

유효한 변수 이름에는 문자, 숫자, 밑줄이 포함될 수 있습니다. [변수]를 참조하십시오. 변수 이름은 대소문자를 구분합니다.

원하는 대로 임의의 변수를 설정할 수 있지만, agens는 일부를 특수 변수로 취급합니다. 이는 [변수]에서 설명합니다.

참고: 이 명령은 SQL 명령 SET과 관련이 없습니다.

\setenv name [ value ]
환경 변수 name을 value로 설정하거나, 값이 제공되지 않으면 환경 변수를 해제합니다. 다음은 예시입니다:

db=# \setenv PAGER less
db=# \setenv LESS -imx4F

\sf[+] function_description
이 명령은 CREATE OR REPLACE FUNCTION 명령 형식으로 명명된 함수의 정의를 가져와 표시합니다. 정의는 \o에서 설정한 현재 쿼리 출력 채널로 출력됩니다.

대상 함수는 이름만으로 지정하거나 이름과 인수(예: foo(integer, text))로 지정할 수 있습니다. 동일한 이름의 함수가 둘 이상 있는 경우 인수 타입을 지정해야 합니다.

명령 이름에 +를 추가하면 출력 라인에 번호가 매겨지고 함수 본문의 첫 번째 라인이 첫 번째 라인이 됩니다.

\sv[+] view_name
이 명령은 CREATE OR REPLACE VIEW 명령 형식으로 명명된 뷰의 정의를 가져와 표시합니다. 정의는 \o에서 설정한 현재 쿼리 출력 채널로 출력됩니다.

명령 이름에 +를 추가하면 출력 라인에 1부터 번호가 매겨집니다.

\t
출력 열 이름 헤더와 하단의 행 개수 표시를 토글합니다. 이 명령은 \pset tuples_only에 해당하며 사용자 편의를 위해 제공됩니다.

\T table_options
HTML 형식의 테이블 태그에 속성을 지정합니다. 이 명령은 \pset tableattr table_options에 해당합니다.

\timing [ on | off ]
매개변수가 없으면 각 SQL 문에 소요되는 시간이 밀리초 단위로 표시됩니다. 매개변수를 사용하여 동일한 방식으로 설정합니다.

\unset name
agens 변수 name을 해제(삭제)합니다.

\w or \write filename
\w or \write | command
현재 쿼리 버퍼를 filename 파일로 인쇄하거나 셸 명령 command으로 파이프를 출력합니다.

\watch [ seconds ]
쿼리가 중단되거나 실패할 때까지 현재 쿼리 버퍼(예: \g)를 반복적으로 실행합니다. 실행 사이에 지정된 시간(기본값 2)을 대기합니다. 각 쿼리 결과는 \pset 제목 문자열(있는 경우), 쿼리 시작 시간, 지연 간격을 포함하는 헤더로 표현됩니다.

\x [ on | off | auto ]
확장 테이블 형식 모드를 설정하거나 토글합니다. \pset expanded와 동일합니다.

\z [ pattern ]
테이블, 뷰, 시퀀스와 관련된 접근 권한을 나열합니다. 패턴이 지정되면 패턴과 일치하는 이름의 테이블, 뷰, 시퀀스만 나열됩니다.

이는 \dp(“가시성 권한”)의 별칭입니다.

\! [ command ]
별도의 셸로 전환하거나 셸 command을 실행합니다. 인수는 더 이상 해석되지 않으며 셸이 있는 그대로 받습니다. 특히 변수 치환 규칙과 백슬래시 이스케이프는 적용되지 않습니다.

\? [ topic ]
도움말 정보를 표시합니다. 선택적 topic 매개변수(기본값 commands)는 설명할 agens의 부분을 선택합니다. commands는 agens의 백슬래시 명령을 설명합니다. options는 agens에 전달할 수 있는 명령줄 옵션을 설명합니다. variables는 agens 구성 변수에 대한 도움말 정보를 표시합니다.

패턴

다양한 \d 명령은 pattern 매개변수를 사용하여 표시할 객체의 이름을 지정합니다. 가장 간단한 경우 패턴은 객체의 정확한 이름입니다. 패턴의 문자는 SQL 이름과 마찬가지로 보통 소문자로 변환됩니다. 예를 들어 \dt FOO는 foo라는 테이블을 표시합니다. SQL 이름과 마찬가지로 패턴을 큰따옴표로 묶으면 소문자로 변환되지 않습니다. 패턴에 실제 큰따옴표 문자를 포함해야 하는 경우, 큰따옴표 안에 큰따옴표 두 개를 입력하십시오. 이는 SQL 인용 식별자 규칙과 일치합니다. 예를 들어 \dt "FOO""BAR"는 (foo"bar가 아니라) FOO"BAR라는 테이블을 표시합니다. SQL 이름의 일반 규칙과 달리, 패턴의 특정 부분을 큰따옴표로 묶을 수 있습니다. 예를 들어 \dt FOO"FOO"BAR는 fooFOObar라는 테이블을 표시합니다.

pattern 매개변수가 전혀 생략된 경우, \d 명령은 현재 스키마 검색 경로에 나타나는 모든 객체를 표시합니다. 이는 *를 패턴으로 사용하는 것과 동일합니다. (객체가 검색 경로에 포함되어 있고 동일한 종류의 객체가 검색 경로보다 앞에 나타나지 않으면, 해당 객체가 검색 경로에 표시됩니다. 이는 명시적인 스키마 한정 없이 이름으로 객체를 참조할 수 있다는 설명과 동일합니다.) 가시성과 관계없이 데이터베이스의 모든 객체를 보려면 *.*를 사용하십시오.

패턴 내에서 *는 임의의 문자 시퀀스(문자가 없는 경우 포함)이고, ?는 임의의 단일 문자와 일치합니다(이 표기법은 Unix 셸 파일 이름 패턴과 유사합니다). 예를 들어 \dt int*는 이름이 int로 시작하는 모든 테이블을 표시합니다. 그러나 큰따옴표 안의 *와 ?는 특수한 의미를 잃고 문자 그대로 일치하는 객체를 표시합니다.

점(.)을 포함하는 패턴은 스키마 이름 패턴과 객체 이름 패턴으로 해석됩니다. 예를 들어 \dt foo*.*bar*는 스키마 이름이 “foo”로 시작하고 테이블 이름에 “bar”가 포함된 모든 테이블을 표시합니다. 점이 나타나지 않으면 패턴은 현재 스키마 검색 경로에 나타나는 객체만 일치시킵니다. 큰따옴표 안의 점은 특수한 의미를 잃고 문자 그대로 일치하는 객체를 표시합니다.

고급 사용자는 문자 클래스(예: [0-9])와 같은 정규 표현식 표기법을 사용할 수 있습니다. 모든 정규 표현식 특수 문자는 링크에 지정된 대로 작동합니다. 위에서 언급한 대로 구분자로 변환됩니다. 즉, *는 정규 표현식 표기법으로 변환됩니다. *와 ?는 문자 그대로 .와 $로 변환됩니다. 이러한 패턴 문자는 필요에 따라 .를 ?로, R*를 (R+|)로, R?를 (R|)로 작성하여 모방할 수 있습니다. 정규 표현식의 일반적인 해석과 달리 패턴이 전체 이름과 일치하지 않으므로 $는 정규 표현식과 일치하지 않습니다(즉, $가 패턴에 자동으로 추가됩니다). 패턴을 고정하지 않으려면 시작 및/또는 끝에 *를 작성하십시오. 큰따옴표 안에서는 모든 정규 표현식 특수 문자가 특수한 의미를 잃고 문자 그대로 일치한다는 점에 유의하십시오. 정규 표현식 특수 문자는 연산자 이름 패턴(예: \do의 인수)에서도 문자 그대로 일치합니다.

고급 기능

변수

Agens는 일반적인 Unix 명령 셸과 유사한 변수 치환 기능을 제공합니다. 변수는 단순히 이름/값 쌍이며 임의 길이의 문자열일 수 있습니다. 이름은 문자(비라틴 문자 포함), 숫자, 밑줄로 구성되어야 합니다.

변수를 설정하려면 agens 메타 명령인 \set을 사용하십시오. 다음은 예시입니다:

db=# \set foo bar

변수 “foo”를 “bar”로 설정합니다. 변수의 내용을 조회하려면 이름 앞에 콜론(:)을 입력하십시오. 예를 들어:

db=# \echo :foo
bar

이는 일반 SQL 명령과 메타 명령 모두에서 작동합니다. 자세한 내용은 아래의 [SQL 보간]을 참조하십시오.

두 번째 인수 없이 \set을 호출하면 변수가 빈 문자열 값으로 설정됩니다. 변수를 해제(삭제)하려면 \unset 명령을 사용하십시오. 모든 변수의 값을 표시하려면 인수 없이 \set을 호출하십시오.

이러한 변수 중 일부는 agens에 의해 특수하게 처리됩니다. 변수의 값을 변경하여 런타임에 변경할 수 있는 특정 옵션 설정이나, 경우에 따라 변경 가능한 agens 상태를 나타낼 수 있습니다. 이러한 변수를 다른 목적으로 사용하는 것은 허용되지만 프로그램 동작이 지나치게 빨라질 수 있으므로 권장하지 않습니다. 관례상 모든 특수 처리 변수는 대문자 ASCII 문자(경우에 따라 숫자와 밑줄)로 명명됩니다. 향후 최대 호환성을 보장하기 위해 이러한 변수 이름을 사용자 용도로 사용하지 마십시오. 다음은 특수하게 처리되는 모든 변수의 목록입니다.

AUTOCOMMIT
이것이 on(기본값)이면 각 SQL 명령은 성공적으로 완료되는 즉시 자동으로 커밋됩니다. 이 모드에서 커밋을 지연하려면 BEGIN 또는 START TRANSACTION SQL 명령을 입력해야 합니다. off로 설정되거나 해제되면, COMMIT 또는 END가 명시적으로 호출될 때까지 SQL 명령이 커밋되지 않습니다.

참고: autocommit-off 모드에서는 ABORT 또는 ROLLBACK을 입력하여 실패한 트랜잭션을 명시적으로 중단해야 합니다. 또한 커밋하지 않고 세션을 종료하면 작업이 손실됩니다.

참고: autocommit-on 모드는 AgensGraph의 일반적인 동작이지만, autocommit-off가 SQL 사양에 더 가깝습니다. autocommit-off를 원하면 시스템에서 사용할 수 있는 psqlrc 파일 또는 ~/.psqlrc 파일을 사용하여 설정할 수 있습니다.

COMP_KEYWORD_CASE
SQL 키워드를 완성할 때 사용할 문자를 결정합니다. lower 또는 upper로 설정하면 완성된 단어가 각각 소문자 또는 대문자로 표시됩니다. preserve-lower 또는 preserve-upper(기본값)로 설정하면 단어가 이미 입력된 경우에만 완성된 단어가 표시되며, 입력된 내용이 각각 소문자 또는 대문자로 표시됩니다.

DBNAME
현재 연결된 데이터베이스의 이름입니다. (프로그램 시작을 포함하여) 데이터베이스에 연결할 때마다 설정되지만, 이를 끌 수도 있습니다.

ECHO
all로 설정하면 비어 있지 않은 모든 입력 라인이 읽혀 표준 출력으로 인쇄됩니다(대화식으로 읽은 라인에는 적용되지 않음). 프로그램 시작 시 이 동작을 선택하려면 스위치 -a를 사용하십시오. queries로 설정하면 agens는 서버로 전송될 때마다 각 쿼리를 표준 출력으로 인쇄합니다(스위치 -e). error로 설정하면 오류를 일으킨 쿼리만 표준 오류 출력에 표시됩니다(스위치 -b). 해제되거나 none(또는 위 이외의 값)으로 설정되면 쿼리가 표시되지 않습니다.

ECHO_HIDDEN
이 변수가 on으로 설정되어 있고 백슬래시 명령이 데이터베이스를 조회하면, 쿼리가 먼저 표시됩니다. 이 기능을 통해 AgensGraph 내부를 학습하고 자신의 프로그램에서 유사한 기능을 제공할 수 있습니다(프로그램 시작 시 이 동작을 선택하려면 스위치 -E를 사용하십시오). 변수를 noexec 값으로 설정하면 쿼리가 표시되지만 실제로 실행을 위해 서버로 전송되지는 않습니다.

ENCODING
현재 클라이언트의 문자 집합 인코딩입니다.

FETCH_COUNT
이 변수가 0보다 큰 정수 값으로 설정되면, SELECT 쿼리의 결과는 전체 결과 집합을 수집하는 기본 동작 대신 행 그룹으로 페치되어 표시됩니다. 따라서 결과 집합의 크기와 관계없이 제한된 양의 메모리만 사용됩니다. 이 기능을 활성화할 때는 일반적으로 100에서 1000 사이의 설정이 사용됩니다. 이 기능을 사용할 때는 일부 행이 이미 표시된 후에 쿼리가 실패할 수 있습니다.

팁: 이 기능은 모든 출력 형식을 허용하지만, 기본 정렬 형식은 보기에 좋지 않은 경향이 있습니다. 이는 각 그룹의 FETCH_COUNT 행이 별도로 서식이 지정되어 행 그룹 간에 다양한 열 너비가 발생하기 때문입니다. 다른 출력 형식이 더 잘 작동합니다.

HISTCONTROL
이 변수가 ignorespace로 설정되면 공백으로 시작하는 라인은 기록 목록에 입력되지 않습니다. ignoredups로 설정되면 이전 기록 라인과 일치하는 라인은 입력되지 않습니다. ignoreboth는 이 두 옵션을 결합합니다. 설정되지 않거나 none(또는 위 이외의 값)으로 설정되면 대화식 모드에서 읽은 모든 행이 기록 목록에 저장됩니다.

참고: 이는 bash에서 유래한 기능입니다.

HISTFILE
기록 목록을 저장하는 데 사용할 파일의 이름입니다. 기본값은 ~/.psql_history입니다. 다음은 입력 예시입니다.

\set HISTFILE ~/.psql_history- :DBNAME

~/.psqlrc에서 agens는 각 데이터베이스의 별도 기록을 유지합니다.

참고: 이는 bash에서 유래한 기능입니다.

HISTSIZE
명령 기록에 저장할 명령의 수입니다. 기본값은 500입니다.

참고: 이는 bash에서 유래한 기능입니다.

HOST
현재 연결된 데이터베이스 서버 호스트입니다. (프로그램 시작을 포함하여) 데이터베이스에 연결할 때마다 설정되지만, 이를 끌 수도 있습니다.

IGNOREEOF
해제된 경우, agens 대화식 세션에 EOF 문자(일반적으로 Control + D)를 보내면 애플리케이션이 종료됩니다. 숫자 값으로 설정하면 애플리케이션이 종료되기 전에 그만큼 많은 EOF 문자가 무시됩니다. 변수가 설정되었지만 숫자 값이 없으면 기본값은 10입니다.

참고: 이는 bash에서 유래한 기능입니다.

LASTOID
INSERT 또는 \lo_import 명령이 반환한 마지막으로 영향을 받은 OID 값입니다. 이 변수는 다음 SQL 명령의 결과가 표시될 때까지만 유효합니다.

ON_ERROR_ROLLBACK
이것이 on으로 설정되어 있고 트랜잭션 블록의 문이 오류를 생성하면, 오류가 무시되고 트랜잭션이 계속됩니다. 대화식 세션을 설정할 때, 이러한 오류는 스크립트 파일을 읽는 동안에는 대화식 세션에서만 무시됩니다. 해제되거나 off로 설정되면, 오류를 생성하는 트랜잭션 블록의 문은 전체 트랜잭션을 중단합니다. 오류 롤백 모드는 트랜잭션 블록의 각 명령 직전에 암시적인 SAVEPOINT를 실행한 다음, 명령이 실패하면 해당 저장 지점으로 롤백하는 방식으로 작동합니다.

ON_ERROR_STOP
기본적으로 명령 처리는 오류 후에도 계속됩니다. 이 변수를 on으로 설정하면 즉시 처리가 중지됩니다. 대화식 모드에서는 agens가 명령 프롬프트로 돌아갑니다. 그렇지 않으면 agens가 종료되어 오류 코드 3을 반환하며, 이는 오류 코드 1로 보고되는 치명적 오류 상황과 구별됩니다. 두 경우 모두 현재 실행 중인 모든 스크립트(최상위 스크립트(있는 경우)와 다른 스크립트를 호출할 수 있는 기타 모든 스크립트)가 즉시 종료됩니다. 최상위 명령 문자열에 여러 SQL 명령이 포함되어 있으면 현재 명령에서 처리가 중단됩니다.

PORT
현재 연결된 데이터베이스 서버 포트입니다. (프로그램 시작을 포함하여) 데이터베이스에 연결할 때마다 설정되지만, 이를 끌 수도 있습니다.

PROMPT1
PROMPT2
PROMPT3
agens 결과가 프롬프트에 표시되는 방식을 지정합니다. 아래의 [프롬프트]를 참조하십시오.

QUIET
이 변수를 on으로 설정하는 것은 명령줄 옵션 -q와 동일합니다. 이는 대화식 모드에서는 그다지 유용하지 않습니다.

SHOW_CONTEXT
이 변수는 서버 메시지에 CONTEXT 필드를 표시할지 여부를 제어하기 위해 never, errors, always로 설정할 수 있습니다. 기본값은 errors입니다(오류 메시지에는 표시되지만 경고 메시지에는 표시되지 않음). VERBOSITY가 terse로 설정되어 있으면 효과가 없습니다(방금 받은 오류의 더 자세한 버전은 \errverbose를 참조하십시오).

SINGLELINE
이 변수를 on으로 설정하는 것은 명령줄 옵션 -S와 동일합니다.

SINGLESTEP
이 변수를 on으로 설정하는 것은 명령줄 옵션 -S와 동일합니다.

USER
현재 연결된 데이터베이스 사용자입니다. (프로그램 시작을 포함하여) 데이터베이스에 연결할 때마다 설정되지만, 이를 끌 수도 있습니다.

VERBOSITY
이 변수는 오류 보고서의 세부 사항을 제어하기 위해 default, verbose, terse로 설정할 수 있습니다. 방금 받은 오류의 더 자세한 버전은 \errverbose를 참조하십시오.

SQL 보간

agens 변수의 핵심 기능은 메타 명령 인수뿐만 아니라 일반 SQL 문에도 “보간”할 수 있다는 것입니다. 또한 agens는 식별자로 사용되는 SQL 리터럴과 변수 값을 적절하게 따옴표로 묶을 수 있는 기능을 제공합니다. 값을 따옴표 없이 해석하는 구문은 콜론(:)을 변수 이름 앞에 붙이는 것입니다. 예를 들어:

db=# \set foo 'my_table'
db=# SELECT * FROM :foo;

my_table 테이블을 쿼리합니다. 변수의 값이 문자 그대로 복사되며 균형이 맞지 않는 따옴표나 백슬래시 지시문이 포함될 수 있으므로 이는 안전하지 않을 수 있습니다. 어디에 넣는지 반드시 알고 있어야 합니다.

SQL 리터럴이나 식별자로 사용할 때 값을 따옴표로 묶는 것이 가장 안전한 방법입니다. 변수의 값을 SQL 리터럴로 따옴표로 묶으려면 콜론 뒤에 변수 이름을 작은따옴표로 묶으십시오. 값을 SQL 식별자로 따옴표로 묶으려면 콜론 뒤에 변수 이름을 큰따옴표로 작성하십시오. 이 구조는 변수 값에 포함된 따옴표와 기타 특수 문자를 올바르게 처리합니다. 다음은 이전 예시를 더 안전하게 만든 예시입니다.

db=# \set foo 'my_table'
db=# SELECT * FROM :"foo";

변수 보간은 따옴표로 묶인 SQL 리터럴과 식별자 내에서는 수행되지 않습니다. 따라서 :foo와 같은 구조는 변수 값에서 따옴표로 묶인 리터럴을 생성하지 않습니다(값에 포함된 따옴표를 올바르게 처리하지 않으므로 안전하지 않을 수 있습니다).

이 메커니즘을 사용하는 한 가지 예는 파일의 내용을 테이블 열에 복사하는 것입니다. 먼저 파일을 변수에 로드한 다음, 변수의 값을 따옴표로 묶인 문자열로 보간합니다.

db=# \set content `cat my_file.txt`
db=# INSERT INTO my_table VALUES (:'content');

(my_file.txt에 NUL 바이트가 포함되어 있으면 이 기능은 작동하지 않습니다. agens는 변수 값에 포함된 NUL 바이트를 지원하지 않습니다.)

콜론은 SQL 명령에 정당하게 나타날 수 있으므로, 보간하려는 명확한 시도(즉, :name, :’name’ 또는 :”name”)는 명명된 변수가 현재 설정되어 있지 않으면 대체되지 않습니다. 어떤 경우에도 백슬래시로 콜론을 이스케이프하여 대체 코드로부터 보호할 수 있습니다.

변수에 대한 콜론 구문은 ECPG와 같은 내장 쿼리 언어를 위한 표준 SQL입니다. 배열 슬라이스와 타입 캐스팅에 대한 콜론 구문은 AgensGraph 확장이며 표준 사용법과 충돌할 수 있습니다. 변수의 값을 SQL 리터럴이나 식별자로 이스케이프하는 콜론-따옴표 구문은 agens의 확장입니다.

프롬프트

Agens는 프롬프트에서 사용자가 사용자 정의할 수 있습니다. 세 가지 변수 PROMPT1, PROMPT2, PROMPT3에는 특수 이스케이프 시퀀스와 프롬프트의 모양을 설명하는 문자열이 있습니다. PROMPT1은 agens가 새 명령을 요청할 때 표시되는 일반 프롬프트입니다. PROMPT2는 명령이 세미콜론이나 따옴표로 끝나지 않아 명령 입력 중에 추가 입력이 필요할 때 표시됩니다. PROMPT3은 SQL COPY FROM STDIN 명령이 실행 중이고 행 값을 터미널에 입력해야 할 때 표시됩니다.
선택한 프롬프트 변수의 값은 백분율 기호(%)가 있는 경우를 제외하고 있는 그대로 인쇄됩니다. 특정 텍스트는 다음 문자로 대체됩니다. 정의된 대안은 다음과 같습니다:

UNIX 도메인 소켓을 통한 연결의 경우, 데이터베이스 서버의 전체 호스트 이름(도메인 이름 포함) 또는 [local]로 설정되며, Unix 도메인 소켓이 기본 위치에 없으면 [local: /dir/name]로 설정됩니다.

첫 번째 점에서 잘린 데이터베이스 서버의 호스트 이름이며, 연결이 Unix 도메인 소켓을 통한 경우 [local]입니다.

데이터베이스 서버가 수신 대기 중인 포트 번호입니다.

데이터베이스 세션 사용자 이름입니다. (이 값의 확장은 SET SESSION AUTHORIZATION 명령의 결과로 데이터베이스 세션 중에 변경될 수 있습니다.)

현재 데이터베이스의 이름입니다.

세션 사용자가 데이터베이스 수퍼유저이면 #이고, 그렇지 않으면 >입니다. (이 값의 확장은 SET SESSION AUTHORIZATION 명령의 결과로 데이터베이스 세션 중에 변경될 수 있습니다.)

현재 연결된 백엔드의 프로세스 ID입니다.

프롬프트 1에서는 보통 =이지만, 단일 라인 모드이면 ^이고, 세션이 데이터베이스에서 연결 해제되면(\connect가 실패하면 발생할 수 있음) !입니다.

프롬프트 2에서 %R은 psql이 추가 입력을 기다리는 이유에 따라 문자로 대체됩니다. 명령이 단순히 아직 종료되지 않았으면 -, 완료되지 않은 /* ... */ 주석이 있으면 *, 완료되지 않은 따옴표 문자열이 있으면 작은따옴표, 완료되지 않은 따옴표 식별자가 있으면 큰따옴표, 완료되지 않은 달러 인용 문자열이 있으면 달러 기호, 짝이 맞지 않는 왼쪽 괄호가 있으면 (입니다. 프롬프트 3에서는 %R이 아무 것도 생성하지 않습니다.

현재 문에서 1부터 시작하는 라인 번호입니다.

프롬프트에는 예를 들어 프롬프트 텍스트의 색상, 배경, 스타일을 변경하거나 터미널 창의 제목을 변경하는 터미널 제어 문자가 포함될 수 있습니다. Readline의 라인 편집이 제대로 작동하려면 이러한 인쇄되지 않는 제어 문자를 %[와 %]로 묶어 보이지 않게 해야 합니다. 프롬프트 내에 여러 쌍의 옵션이 나타날 수 있습니다.

다음은 예시입니다:

db=# \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# '

VT100 호환의 컬러 지원 터미널에 굵게(1;), 검은색 바탕에 노란색(33;40) 프롬프트가 나타납니다.

프롬프트에 백분율 기호를 삽입하려면 %%를 사용하십시오. 기본 프롬프트는 프롬프트 1과 2의 경우 %/%R%#이고 프롬프트 3의 경우 >>입니다.

참고: 이는 tcsh에서 유래한 기능입니다.

명령줄 편집

Agens는 편리한 라인 편집 및 검색을 위해 Readline 라이브러리를 지원합니다. agens를 종료하면 명령 기록이 자동으로 저장되고 agens를 (재)시작할 때 다시 로드됩니다. 완성 로직이 SQL 파싱을 요청하지 않더라도 탭 완성이 지원됩니다. 탭 완성으로 생성된 쿼리는 다른 SQL 명령(예: SET TRANSACTION ISOLATION LEVEL)과 충돌할 수 있습니다. 탭 완성이 마음에 들지 않으면 홈 디렉터리의 .inputrc 파일에 다음을 추가하여 비활성화할 수 있습니다.

$if agens
set disable-completion on
$endif

(이는 agens가 아니라 Readline의 기능입니다. 자세한 내용은 해당 설명서를 참조하십시오.)

환경

COLUMNS
\pset columns가 0이면, 광범위한 출력이 필요한지 여부를 결정하기 위해 wrapped 형식과 너비를 조정하거나 확장 자동 모드에서 세로 형식으로 전환해야 합니다.

PAGER
쿼리 결과가 화면에 맞지 않으면 이 명령을 통해 파이프됩니다. 일반적인 값은 more 또는 less입니다. 기본값은 플랫폼에 따라 다릅니다. PAGER를 공백으로 설정하거나 \pset 명령의 페이저 관련 옵션을 사용하여 비활성화할 수 있습니다.

PGDATABASE
PGHOST
PGPORT
PGUSER
기본 연결 매개변수입니다(참조).

PSQL_EDITOR
EDITOR
VISUAL
\e, \ef, \ev 명령에 사용되는 편집기입니다. 이러한 변수는 나열된 순서대로 확인되며 처음 설정된 것이 사용됩니다.

내장 기본 편집기는 Unix 시스템에서는 vi이고 Windows 시스템에서는 notepad.exe입니다.

PSQL_EDITOR_LINENUMBER_ARG
라인 번호 인수와 함께 \e, \ef, \ev를 사용할 때, 이러한 변수는 시작 라인 번호를 사용자의 편집기에 전달하는 데 사용되는 명령줄 인수를 지정합니다. Emacs나 vi와 같은 편집기의 경우 이는 더하기(+) 기호입니다. 옵션 이름과 라인 번호 사이에 공백이 있어야 하는 경우, 변수 값에 뒤따르는 공백을 포함하십시오. 다음은 예시입니다:

PSQL_EDITOR_LINENUMBER_ARG='+'
PSQL_EDITOR_LINENUMBER_ARG='--line '

Unix 시스템에서는 기본값이 +입니다(이는 기본 편집기 vi에 해당하며 다른 많은 일반 편집기에도 유용합니다). 그러나 Windows 시스템에는 기본값이 없습니다.

PSQL_HISTORY
명령 기록 파일의 대체 위치로 물결표(~) 확장이 수행됩니다.

PSQLRC
사용자의 .psqlrc 파일의 대체 위치로 물결표(~) 확장이 수행됩니다.

SHELL
\!로 실행되는 명령입니다.

TMPDIR
임시 파일을 저장하는 디렉터리입니다(기본값은 /tmp). 이 유틸리티는 libpq가 지원하는 환경 변수를 사용합니다.

파일

psqlrc 및 ~/.psqlrc
Agens는 -X 옵션을 지정하지 않는 한, 데이터베이스에 연결하고 일반 명령을 수락하기 전에 시스템 전역 시작 파일(psqlrc)과 개인 시작 파일(~/.psqlrc)에서 명령을 읽고 실행합니다. 이러한 파일은 일반적으로 \set과 SET 명령을 사용하여 클라이언트 및/또는 서버를 설정하는 데 사용됩니다.

시스템 전역 시작 파일의 이름은 psqlrc이며 설치의 “System Configuration” 디렉터리에서 찾을 수 있습니다. 이 디렉터리는 pg_config --sysconfdir를 실행하여 가장 확실하게 식별할 수 있습니다. 기본적으로 이 디렉터리는 AgensGraph 실행 파일이 포함된 디렉터리에 대한 ../etc/입니다. 이 디렉터리의 이름은 PGSYSCONFDIR 환경 변수를 통해 명시적으로 설정할 수 있습니다.

사용자의 개인 시작 파일 이름은 .psqlrc이며 호출 사용자의 홈 디렉터리에서 검색됩니다. 이러한 개념을 사용할 수 없는 Windows에서는 개인 시작 파일의 이름이 %APPDATA%\postgresql\psqlrc.conf입니다. 사용자 시작 파일의 위치는 PSQLRC 환경 변수를 통해 명시적으로 설정할 수 있습니다.

.psql_history
명령줄 기록은 ~/.psql_history 또는 Windows에서는 %APPDATA%\postgresql\psql_history 파일에 저장됩니다.

기록 파일의 위치는 PSQL_HISTORY 환경 변수를 통해 명시적으로 설정할 수 있습니다.

참고 사항

Agens는 서버의 메이저 버전(이전 또는 신규)과 가장 잘 작동합니다. 특히 서버가 agens 자체보다 최신인 경우 백슬래시 명령이 실패할 수 있습니다. SQL 명령을 실행하고 쿼리 결과를 표시하는 일반적인 기능은 서버의 새 메이저 버전에서 작동해야 하지만, 모든 경우에 보장되지는 않습니다. agens를 사용하여 agens 프로그램을 다른 메이저 버전의 여러 서버에 연결하려는 경우, 최신 버전을 사용하는 것이 좋습니다. 또는 각 메이저 버전의 agens 사본을 보관하고 서버와 일치하는 버전을 사용해야 합니다.

Windows 사용자를 위한 참고 사항

Agens는 “콘솔 애플리케이션”으로 빌드됩니다. Windows 콘솔 창은 시스템의 나머지 부분과 다른 인코딩을 사용하므로 agens에서 8비트 문자를 사용할 때 특히 주의하십시오. agens가 문제가 있는 콘솔 코드 페이지를 감지하면 시작 시 경고 메시지가 표시됩니다. 콘솔 코드 페이지를 변경하려면 다음과 같이 두 가지가 필요합니다:

  • cmd.exe /c chcp 1252 코드 페이지를 입력하여 설정합니다(1252는 독일어에 적합한 코드 페이지입니다. 적절한 코드 페이지를 입력하십시오). Cygwin을 사용하는 경우 이 명령을 /etc/profile에 넣을 수 있습니다.

  • 래스터 글꼴은 ANSI 코드 페이지에서 작동하지 않으므로 콘솔 글꼴을 Lucida Console로 설정하십시오.

예제

(아래의) 첫 번째 예제는 여러 입력 라인에 걸쳐 명령을 분산하는 방법을 보여 줍니다.

agens=# CREATE TABLE my_table (
agens(#  first integer not null default 0,
agens(#  second text)
agens-# ;
CREATE TABLE

테이블의 정의를 확인합니다.

agens=# \d my_table
             Table "my_table"
 Attribute |  Type   |      Modifier
-----------+---------+--------------------
 first     | integer | not null default 0
 second    | text    |

다음과 같이 프롬프트를 변경할 수 있습니다:

agens=# \set PROMPT1 '%n@%m %~%R%# '
tester@[local] agens=# 

테이블에 데이터를 채우고 테이블을 쿼리합니다.

tester@[local] agens=#  SELECT * FROM my_table;
 first | second
-------+--------
     1 | one
     2 | two
     3 | three
     4 | four
(4 rows)

\pset 명령을 사용하여 다양한 방식으로 테이블을 표시할 수 있습니다.

tester@[local] agens=# \pset border 2
Border style is 2.
tester@[local] agens=# SELECT * FROM my_table;
+-------+--------+
| first | second |
+-------+--------+
|     1 | one    |
|     2 | two    |
|     3 | three  |
|     4 | four   |
+-------+--------+
(4 rows)

tester@[local] agens=# \pset border 0
Border style is 0.
tester@[local] agens=# SELECT * FROM my_table;
first second
----- ------
    1 one
    2 two
    3 three
    4 four
(4 rows)

tester@[local] agens=# \pset border 1
Border style is 1.
tester@[local] agens=# \pset format unaligned
Output format is unaligned.
tester@[local] agens=# \pset fieldsep ,
Field separator is ",".
tester@[local] agens=# \pset tuples_only
Showing only tuples.
tester@[local] agens=# SELECT second, first FROM my_table;
one,1
two,2
three,3
four,4

또는 단축 명령을 사용할 수 있습니다.

tester@[local] agens=# \a \t \x
Output format is aligned.
Tuples only is off.
Expanded display is on.
tester@[local] agens=# SELECT * FROM my_table;
-[ RECORD 1 ]-
first  | 1
second | one
-[ RECORD 2 ]-
first  | 2
second | two
-[ RECORD 3 ]-
first  | 3
second | three
-[ RECORD 4 ]-
first  | 4
second | four

적절한 경우 \crosstabview 명령을 사용하여 쿼리 결과를 크로스탭 표현으로 표시할 수 있습니다.

db=# SELECT first, second, first > 2 AS gt2 FROM my_table;
 first | second | gt2 
-------+--------+-----
     1 | one    | f
     2 | two    | f
     3 | three  | t
     4 | four   | t
(4 rows)

db=# \crosstabview first second
 first | one | two | three | four 
-------+-----+-----+-------+------
     1 | f   |     |       | 
     2 |     | f   |       | 
     3 |     |     | t     | 
     4 |     |     |       | t
(4 rows)

두 번째 예제는 숫자 시퀀스가 역순으로 정렬되고 열은 오름차순 숫자 순서로 정렬된 곱셈표를 보여 줍니다.

agens=# SELECT t1.first as "A", t2.first+100 AS "B", t1.first*(t2.first+100) as "AxB",
agens-# row_number() over(order by t2.first) AS ord
agens-# FROM my_table t1 CROSS JOIN my_table t2 ORDER BY 1 DESC
agens-# \crosstabview "A" "B" "AxB" ord
 A | 101 | 102 | 103 | 104 
---+-----+-----+-----+-----
 4 | 404 | 408 | 412 | 416
 3 | 303 | 306 | 309 | 312
 2 | 202 | 204 | 206 | 208
 1 | 101 | 102 | 103 | 104
(4 rows)

pg_dump

pg_dump는 AgensGraph 데이터베이스를 백업하는 유틸리티입니다. 데이터베이스가 사용 중인 동안에도 일관된 백업을 수행합니다. pg_dump는 데이터베이스를 스크립트 파일이나 기타 아카이브 파일로 추출합니다.

사용 방법:

pg_dump [option]... [dbname]

옵션

dbname
덤프할 데이터베이스의 이름을 지정합니다. 지정하지 않으면 연결에 지정된 사용자 이름이 사용됩니다.

-a
–data-only
스키마(데이터 정의)가 아닌 데이터만 덤프합니다.

-b
–blobs
대형 객체를 덤프에 포함합니다. 이는 --schema, --table 또는 --schema-only가 지정되지 않은 한 기본 동작입니다. 따라서 -b 스위치는 특정 스키마나 테이블이 요청된 덤프에 대형 객체를 추가하는 경우에만 유용합니다. 블롭은 데이터로 간주되므로 --data-only를 사용할 때는 포함되지만, --schema-only인 경우에는 포함되지 않습니다.

-c
–clean
데이터베이스 객체를 생성하는 명령을 실행하기 전에 데이터베이스 객체를 정리(삭제)하는 명령을 출력합니다. (--if-exists가 지정되지 않았고 대상 데이터베이스에 객체가 존재하지 않으면 잘못된 오류 메시지가 생성될 수 있습니다.)

이 옵션은 일반 텍스트 형식에서만 의미가 있습니다. 아카이브 형식의 경우 pg_restore를 호출할 때 옵션을 지정할 수 있습니다.

-C
–create
데이터베이스 자체를 생성하고 생성된 데이터베이스에 다시 연결하는 명령으로 출력을 시작합니다. (이 형식의 스크립트를 사용하는 경우, 스크립트를 실행하기 전에 연결하려는 대상 설치의 데이터베이스는 중요하지 않습니다.) --clean도 지정되면, 스크립트는 대상 데이터베이스를 삭제한 후 다시 연결합니다.

이 옵션은 일반 텍스트 형식에서만 의미가 있습니다. 아카이브 형식의 경우 pg_restore를 호출할 때 옵션을 지정할 수 있습니다.

-E encoding
–encoding=encoding
지정된 문자 집합 인코딩으로 덤프를 생성합니다. 기본적으로 덤프는 데이터베이스 인코딩으로 작성됩니다. (동일한 결과를 얻는 다른 방법은 PGCLIENTENCODING 환경 변수를 원하는 덤프 인코딩으로 설정하는 것입니다.)

-f file
–file=file
출력을 지정된 파일로 보냅니다. 이 매개변수는 표준 출력이 사용되는 파일 기반 출력 형식에서는 생략할 수 있습니다. 그러나 파일 대신 대상 디렉터리를 지정하는 디렉터리 출력 형식의 경우 제공해야 합니다. 이 경우 (존재하지 않던) 디렉터리가 pg_dump에 의해 생성됩니다.

-F format
–format=format(c|d|t|p)
출력 형식을 선택합니다. format은 다음 중 하나일 수 있습니다:

  • p
    plain
    일반 텍스트 SQL 스크립트 파일을 출력합니다(기본값).

  • c
    custom
    pg_restore 입력에 적합한 사용자 정의 타입 아카이브를 출력합니다. 디렉터리 출력 형식과 함께, 이 옵션은 복원 중에 유지되는 항목을 수동으로 선택하고 그 순서를 변경할 수 있는 가장 유연한 출력 형식입니다. 이 형식은 기본적으로 압축됩니다.

  • d
    directory
    pg_restore 입력에 적합한 사용자 정의 타입 아카이브를 출력합니다. 이는 각 테이블, 블롭을 덤프할 파일, 그리고 pg_restore가 읽을 수 있는 기계 판독 가능 형식으로 덤프된 객체를 설명하는 이른바 목차 파일이 포함된 디렉터리를 생성합니다. 디렉터리 타입 아카이브는 표준 Unix 도구로 조작할 수 있습니다. 예를 들어 압축되지 않은 아카이브의 파일은 gzip으로 압축할 수 있습니다. 이 형식은 기본적으로 압축되며 병렬 덤프를 지원합니다.

  • t
    tar
    pg_restore 입력에 적합한 tar 형식 아카이브를 출력합니다. tar 형식은 디렉터리 형식과 호환됩니다. tar 형식 아카이브를 추출하면 유효한 디렉터리 형식 아카이브가 생성됩니다. 그러나 tar 형식은 압축을 지원하지 않습니다. tar 형식에서는 복원 중에 테이블 데이터 항목의 상대적 순서를 변경할 수 없습니다.

-j njobs
–jobs=njobs
njobs개의 테이블을 동시에 덤프하여 병렬 덤프를 실행합니다. 이 옵션은 덤프 시간을 줄이지만 데이터베이스 서버의 부하를 증가시킵니다. 이 옵션은 여러 프로세스가 동시에 데이터를 쓸 수 있는 유일한 출력 형식이므로 디렉터리 출력 형식에서만 사용할 수 있습니다.

pg_dump는 데이터베이스에 njobs+1개의 연결을 열기 때문에, max_connections 설정이 모든 연결을 수용할 만큼 충분히 높아야 합니다.

병렬 덤프를 실행하는 동안 데이터베이스 객체에 대한 배타적 잠금을 요청하면 덤프가 실패할 수 있습니다. 이는 pg_dump 마스터 프로세스가 덤프가 실행되는 동안 아무도 객체를 삭제하지 못하도록 워커 프로세스에게 나중에 덤프할 객체에 대한 공유 잠금을 요청하도록 요구하기 때문입니다. 다른 클라이언트가 테이블에 대한 배타적 잠금을 요청하면 잠금이 부여되지 않고 마스터 프로세스의 공유 잠금이 해제될 때까지 대기합니다. 그 결과 테이블에 대한 다른 접근이 부여되지 않고 배타적 잠금 요청 뒤에서 대기합니다. 여기에는 테이블을 덤프하려는 워커 프로세스도 포함됩니다. 아무런 예방 조치가 없으면 전형적인 교착 상태가 발생합니다. 이 충돌을 감지하기 위해 pg_dump 워커 프로세스는 NOWAIT 옵션을 사용하여 또 다른 공유 잠금을 요청합니다. 이 공유 잠금이 워커 프로세스에 부여되지 않으면 다른 누군가가 배타적 잠금을 요청한 것이며, 덤프를 계속할 방법이 없으므로 pg_dump는 덤프를 중지해야 합니다.

일관된 백업을 위해서는 데이터베이스 서버가 동기화된 스냅샷을 지원해야 합니다. 이 기능을 사용하면 데이터베이스 클라이언트가 서로 다른 연결을 사용하더라도 동일한 데이터셋을 볼 수 있습니다. pg_dump -j는 여러 데이터베이스 연결을 사용합니다. 마스터 프로세스에서 한 번 데이터베이스에 연결하고 각 워커 작업에서 다시 연결합니다. 동기화된 스냅샷 기능이 없으면 서로 다른 워커 작업이 각 연결에서 동일한 데이터를 볼 수 없기 때문에 일관되지 않은 백업이 발생할 수 있습니다.

-n schema
–schema=schema
스키마와 일치하는 schema만 덤프합니다. 이는 스키마 자체와 스키마에 포함된 모든 객체를 모두 선택합니다. 이 옵션이 지정되지 않으면 대상 데이터베이스의 모든 비시스템 스키마가 덤프됩니다. 여러 -n 스위치를 만들어 여러 스키마를 선택할 수 있습니다. 스키마 매개변수도 agens의 \d 명령에서 사용하는 규칙과 동일한 패턴으로 해석되며, 와일드카드 문자를 사용하여 여러 스키마를 선택할 수 있습니다. 와일드카드를 사용할 때는 셸이 와일드카드를 확장하지 못하도록 따옴표를 사용하십시오([예제] 참조).

주의: -n이 지정되면 pg_dump는 선택한 스키마에 따라 달라질 수 있는 다른 데이터베이스 객체를 덤프하지 않습니다. 따라서 특정 스키마 덤프의 결과가 그 자체로 정상적인 깨끗한 데이터베이스로 복원될 수 있다는 보장은 없습니다.

주의: -n이 지정되면 블롭과 같은 비스키마 객체는 덤프되지 않습니다. --blobs 스위치를 사용하여 블롭을 덤프에 다시 추가할 수 있습니다.

-N schema
–exclude-schema=schema
schema 패턴과 일치하는 schema를 덤프하지 않습니다. 패턴은 -n과 동일한 규칙에 따라 해석됩니다. -N은 여러 패턴 중 하나와 일치하는 스키마를 제외하기 위해 두 번 이상 사용할 수 있습니다.

-n과 -N이 모두 주어지면, 이 작업은 -N 스위치를 제외하고 하나 이상의 -n 스위치와 일치하는 스키마를 덤프합니다. -N이 -n 없이 나타나면, -N과 일치하는 스키마가 일반 덤프에서 제외됩니다.

-o
–oids
객체 식별자(OID)를 모든 테이블의 데이터 일부로 덤프합니다. 애플리케이션이 어떤 방식으로든(예: 외래 키 제약 조건) OID 열을 참조하는 경우 이 옵션을 사용하십시오. 그렇지 않으면 이 옵션을 사용할 수 없습니다.

-O
–no-owner
원본 데이터베이스와 일치하도록 객체의 소유권을 설정하는 명령을 출력하지 않습니다. 기본적으로 pg_dump는 생성된 데이터베이스 객체의 소유권을 설정하기 위해 ALTER OWNER 또는 SET SESSION AUTHORIZATION 문을 실행합니다. 이 명령은 수퍼유저(또는 스크립트의 모든 객체를 소유한 동일한 사용자)가 시작하지 않는 한 스크립트가 실행될 때 실패합니다. 모든 객체의 소유권을 해당 사용자에게만 부여하지만 모든 사용자가 복원할 수 있는 스크립트를 생성하려면 -O를 지정하십시오.

이 옵션은 일반 텍스트 형식에서만 의미가 있습니다. 아카이브 형식의 경우 pg_restore를 호출할 때 옵션을 지정할 수 있습니다.

-s
–schema-only
객체 정의(스키마)만 덤프합니다.

이 옵션은 --data-only의 반대입니다. 이는 --section=pre-data --section=post-data와 유사합니다.

(이를 “schema”라는 단어를 다른 방식으로 사용하는 --schema 옵션과 혼동하지 마십시오.)

데이터베이스의 테이블 중 일부에 대해서만 테이블 데이터를 제외하려면 --exclude-table-data를 참조하십시오.

-S username
–superuser=username
트리거를 사용하지 않을 때 사용할 수퍼유저의 이름을 지정합니다. 이 옵션은 --disable-triggers가 사용되는 경우에만 관련이 있습니다(일반적으로 이 단계를 건너뛰는 것이 좋습니다. 대신 결과를 수퍼유저로 시작해야 합니다).

-t table
–table=table
이름이 테이블과 일치하는 table만 덤프합니다. 이를 위해 “table”에는 뷰, 구체화된 뷰, 시퀀스, 외래 테이블이 포함됩니다. 여러 -t 스위치를 만들어 여러 테이블을 선택할 수 있습니다. table 매개변수는 agens \d 명령과 동일한 패턴으로 해석되므로, 패턴에 와일드카드 문자를 사용하여 여러 테이블을 선택할 수 있습니다. 셸이 와일드카드를 확장하지 못하도록 따옴표를 사용하십시오([예제] 참조).

-t로 선택한 테이블은 스위치와 관계없이 덤프되고 비테이블 객체는 덤프되지 않으므로, -t를 사용할 때 -n과 -N 스위치는 작동하지 않습니다.

주의: -t를 지정하면 pg_dump는 선택한 테이블이 의존하는 다른 데이터베이스 객체를 덤프하려고 시도하지 않습니다. 따라서 특정 데이터베이스의 결과가 그 자체의 데이터베이스로 성공적으로 복원될 수 있다는 보장은 없습니다.

-T table
–exclude-table=table
table 패턴과 일치하는 테이블을 덤프하지 않습니다. 이 패턴은 -t와 동일한 규칙에 따라 해석됩니다. -T는 여러 패턴 중 하나와 일치하는 테이블을 제외하기 위해 두 번 이상 줄 수 있습니다.

-t와 -T가 모두 주어지면, 이 작업은 -T 스위치를 제외하고 하나 이상의 -t 스위치와 일치하는 테이블을 덤프합니다. -T가 -t 없이 사용되면, -T와 일치하는 테이블이 일반 덤프에서 제외됩니다.

-v
–verbose
상세 모드를 지정합니다. 이를 통해 pg_dump가 자세한 객체 설명과 시작/중지 시간을 덤프 파일에 출력하고 메시지를 표준 오류로 처리합니다.

-V
–version
pg_dump의 버전을 표시하고 종료합니다.

-x
–no-privileges
–no-acl
접근 권한(grant/revoke 명령) 덤프를 방지합니다.

-Z 0..9
–compress=0..9
사용할 압축 수준을 지정합니다. “0”은 압축 없음을 의미합니다. 사용자 정의 아카이브 형식의 경우 이는 개별 테이블 데이터 세그먼트의 압축을 지정하며, 기본값은 중간 수준으로 압축하는 것입니다. 일반 텍스트 출력의 경우 0이 아닌 압축 수준을 설정하면 gzip이 제공하는 대로 전체 출력 파일이 압축됩니다(단, 기본값은 압축되지 않음). tar 아카이브 형식은 현재 압축을 전혀 지원하지 않습니다.

–binary-upgrade
이 옵션은 전체 업그레이드 유틸리티에서 사용됩니다. 이 옵션을 다른 목적으로 사용하는 것은 권장되거나 지원되지 않습니다. 이 옵션의 동작은 향후 릴리스에서 예고 없이 변경될 수 있습니다.

–column-inserts
명시적 열 이름이 있는 INSERT 문(INSERT INTO table (column, …) VALUES …)으로 데이터를 덤프합니다. 이는 복원 속도를 크게 늦춥니다. 이 옵션은 주로 비Agens 데이터베이스에 로드할 수 있는 덤프를 생성하는 데 유용합니다. 이 옵션은 각 행에 대해 별도의 명령을 생성하므로, 한 행을 다시 로드하는 동안 오류가 발생하면 (전체 테이블 내용이 아닌) 해당 행만 손실됩니다.

–disable-dollar-quoting
이 옵션은 함수 본문에 대한 달러 인용 사용을 비활성화하고 SQL 표준 문자열 구문을 사용하는 따옴표 사용을 허용합니다.

–disable-triggers
이 옵션은 데이터 전용 덤프를 생성할 때만 관련이 있습니다. 데이터를 다시 로드하는 동안 대상 테이블의 트리거를 일시적으로 비활성화하는 명령을 포함하도록 pg_dump에 지시합니다. 데이터를 다시 로드하는 동안 호출을 원하지 않는 참조 무결성 검사가 있는 경우 또는 테이블에 다른 트리거가 있는 경우에 이 옵션을 사용하십시오.

현재 --disable-triggers에 대해 생성된 명령은 수퍼유저가 실행해야 합니다. 따라서 -S로 수퍼유저 이름을 지정하거나 결과 스크립트를 수퍼유저로 시작할 때 주의하십시오.

이 옵션은 일반 텍스트 형식에서만 의미가 있습니다. 아카이브 형식의 경우 pg_restore를 호출할 때 옵션을 지정할 수 있습니다.

–enable-row-security
이 옵션은 행 보안이 있는 테이블의 내용을 덤프할 때만 관련이 있습니다. 기본적으로 pg_dump는 테이블에서 모든 데이터가 덤프되도록 row_security를 off로 설정합니다. 사용자가 행 보안을 우회할 충분한 권한이 없으면 오류가 발생합니다. 이 매개변수는 row_security를 on으로 설정하여 pg_dump가 사용자가 접근할 수 있는 일부 테이블 내용을 덤프할 수 있도록 합니다.

–exclude-table-data=table
table 패턴과 일치하는 테이블의 데이터를 덤프하지 않습니다. --exclude-table-data는 여러 패턴 중 하나와 일치하는 테이블을 제외하기 위해 두 번 이상 제공할 수 있습니다. 이 옵션은 데이터가 필요하지 않더라도 특정 테이블을 정의해야 할 때 유용합니다.

데이터베이스의 모든 테이블에 대한 데이터를 제외하려면 --schema-only를 참조하십시오.

–if-exists
조건부 명령(예: IF EXISTS 절)을 사용하여 데이터베이스 객체를 정리합니다. 이 옵션은 --clean이 지정되지 않으면 유효하지 않습니다.

–inserts
COPY 대신 INSERT 명령으로 데이터를 덤프합니다. 이는 복원 속도를 크게 늦춥니다. 이 옵션은 주로 비Agens 데이터베이스에 로드할 수 있는 덤프를 생성하는 데 유용합니다. 이 옵션은 각 행에 대해 별도의 명령을 생성하므로, 한 행을 다시 로드하는 동안 오류가 발생하면 (전체 테이블 내용이 아닌) 해당 행만 손실됩니다. 열 순서를 재배열하면 복원이 실패할 수 있습니다. --column-insert 옵션은 느리지만 열 순서를 변경할 때 안전하게 사용할 수 있습니다.

–lock-wait-timeout=timeout
덤프 시작 시 공유 테이블 잠금을 획득하기 위해 영원히 대기하지 않습니다. 지정된 timeout 내에 테이블을 잠글 수 없으면 실패합니다. timeout은 SET statement_timeout이 허용하는 형식으로 지정할 수 있습니다(허용되는 값은 밀리초 단위의 정수입니다).

–no-security-labels
보안 레이블을 덤프하지 않습니다.

–no-synchronized-snapshots
이 옵션을 사용하면 pg_dump -j를 실행할 수 있습니다. 자세한 내용은 -j 매개변수의 설명을 참조하십시오.

–no-tablespaces
테이블스페이스를 선택하는 명령을 출력하지 않습니다. 이 옵션을 사용하면 모든 객체가 복원 중 기본값인 테이블스페이스에 생성됩니다.

이 옵션은 일반 텍스트 형식에서만 의미가 있습니다. 아카이브 형식의 경우 pg_restore를 호출할 때 옵션을 지정할 수 있습니다.

–no-unlogged-table-data
로그되지 않은 테이블의 내용을 덤프하지 않습니다. 이 옵션은 테이블 정의(스키마)가 덤프되는지 여부에는 영향을 주지 않습니다. 테이블 데이터의 덤프만 제한합니다. 로그되지 않은 테이블의 데이터는 대기 서버에서 덤프할 때 항상 제외됩니다.

–quote-all-identifiers
모든 식별자를 강제로 따옴표로 묶습니다. 이 옵션은 AgensGraph의 메인 버전이 pg_dump와 다른 서버에서 데이터베이스를 덤프하거나, 출력을 다른 메이저 버전의 서버에 로드할 때 권장됩니다. 기본적으로 pg_dump는 해당 메이저 버전에서 예약어인 식별자만 따옴표로 묶습니다. 이는 예약어 집합이 다른 버전의 서버를 다른 버전으로 처리할 때 호환성 문제를 일으킬 수 있습니다. 읽기 어려운 덤프 스크립트를 사용하는 대신 --quote-all-identifier를 사용하여 이 문제를 피할 수 있습니다.

–section=section
명명된 섹션만 덤프합니다. section은 pre-data, data 또는 post-data일 수 있습니다. 이 옵션은 여러 섹션을 선택하기 위해 두 번 이상 지정할 수 있습니다. 기본값은 모든 섹션을 덤프하는 것입니다.

data 섹션에는 실제 테이블 데이터, 대용량 객체 내용, 시퀀스 값이 포함됩니다. post-data 항목에는 인덱스, 트리거, 규칙, 제약 조건(유효성 검사 제약 조건 제외)의 정의가 포함됩니다. pre-data 항목에는 다른 모든 데이터 정의 항목이 포함됩니다.

–serializable-deferrable
사용된 스냅샷이 나중 시점의 데이터베이스 상태와 일치하도록 덤프에서 serializable 트랜잭션을 사용합니다. 이 옵션은 예외가 없는 트랜잭션 스트림의 지점을 기다림으로써, 덤프가 실패하거나 다른 트랜잭션이 serialization_failure로 롤백될 위험이 없도록 보장합니다.

이 옵션은 재해 복구 전용 덤프에는 유용하지 않습니다. 데이터베이스가 여전히 업데이트되는 동안 데이터베이스 사본을 로드하거나, 다른 읽기 전용 부하 분산을 위해 데이터베이스 사본을 로드하는 데 유용할 수 있습니다. 이 옵션이 없으면 덤프가 결국 커밋된 트랜잭션의 이후 실행과 일치하지 않는 상태를 반영할 수 있습니다. 예를 들어 배치의 모든 항목을 표시하지 않고 배치를 닫힘으로 표시하는 배치 처리 기법을 사용할 수 있습니다.

이 옵션은 pg_dump가 시작될 때 활성 읽기/쓰기 트랜잭션이 없으면 차이가 없습니다. 읽기-쓰기 트랜잭션이 활성화(사용)되어 있으면 덤프 시작이 불확실한 시간 동안 지연될 수 있습니다. 일단 실행되면 스위치 사용 여부와 관계없이 성능은 동일합니다.

–snapshot=snapshot
데이터베이스를 덤프할 때 지정된 동기화된 스냅샷을 사용합니다.

이 옵션은 덤프를 논리 복제 슬롯이나 동시 세션과 동기화해야 할 때 유용합니다.

병렬 덤프의 경우 새 스냅샷을 생성하는 대신 이 옵션으로 정의된 스냅샷 이름이 사용됩니다.

–strict-names
각 스키마(-n/--schema)와 테이블(-t/--table) 한정자가 덤프할 데이터베이스의 스키마/테이블 중 하나 이상과 일치해야 합니다. 일치하는 스키마/테이블 한정자가 없으면 pg_dump는 --strict-names 없이 오류를 생성합니다.

이 옵션은 -N/--exclude-schema, -T/--exclude-table, --exclude-table-data에는 영향을 주지 않습니다. 객체와 일치하지 않는 제외 패턴은 오류로 간주되지 않습니다.

–use-set-session-authorization
객체 소유권을 식별하기 위해 ALTER OWNER 명령 대신 SQL 표준 SET SESSION AUTHORIZATION 명령을 출력합니다. 이렇게 하면 덤프가 표준을 준수할 수 있지만, 덤프의 객체 기록에 따라 제대로 복원되지 않을 수 있습니다. 또한 SET SESSION AUTHORIZATION을 사용하는 덤프는 올바르게 복원하려면 수퍼유저 권한이 필요하지만, ALTER OWNER는 더 적은 권한이 필요합니다.

-?
–help
pg_dump 명령줄 인수에 대한 도움말을 표시하고 종료합니다.

다음 명령줄 옵션은 데이터베이스 연결 매개변수를 제어합니다.

-d dbname
–dbname=dbname
연결할 데이터베이스의 이름을 지정합니다. 이는 명령줄의 첫 번째 옵션이 아니라 인수로 dbname을 지정하는 것과 동일합니다.

이 매개변수에 등호(=) 기호가 있거나 유효한 URI 접두사(postgresql:// 또는 postgres://)로 시작하면, conninfo 문자열로 처리됩니다.

-h host
–host=host
서버가 실행 중인 시스템의 호스트 이름을 지정합니다. 값이 슬래시로 시작하면 Unix 도메인 소켓의 디렉터리로 사용됩니다. 기본값은 (설정된 경우) PGHOST 환경 변수에서 가져옵니다. 그렇지 않으면 Unix 도메인 소켓 연결이 시도됩니다.

-p port
–port=port
서버가 연결을 수신하는 TCP 포트 또는 로컬 Unix 도메인 소켓 파일 확장자를 지정합니다. 기본값은 PGPORT 환경 변수입니다. (컴파일된) 기본값으로 설정해야 합니다.

-U username
–username=username
연결할 사용자의 이름입니다.

-w
–no-password
암호를 입력하라는 프롬프트를 표시하지 않습니다. 서버에서 암호 인증이 필요하고 .pgpass 파일과 같은 다른 방법으로 암호를 사용할 수 없으면, 연결 시도가 실패합니다. 이 옵션은 암호를 입력할 사용자가 없는 배치 작업과 스크립트에 유용할 수 있습니다.

-W
–password
데이터베이스에 연결하기 전에 pg_dump를 실행하여 암호를 입력하게 합니다.

pg_dump는 서버가 암호 인증을 요청할 때 자동으로 암호를 요구하므로 이 옵션은 결코 필요하지 않습니다. 그러나 pg_dump는 서버가 암호를 원하는지 알아내기 위해 연결 시도를 낭비합니다. 경우에 따라 추가 연결 시도를 피하기 위해 -W를 입력하는 것이 좋습니다.

–role=rolename
덤프를 생성하는 데 사용할 롤 이름을 지정합니다. 이 옵션을 사용하면 pg_dump는 데이터베이스에 연결한 후 SET ROLE rolename 명령을 실행합니다. 이는 (-U로 지정된) 인증된 사용자가 pg_dump에 필요한 권한이 없지만 필요한 권한으로 전환할 권한이 있을 때 유용합니다. 수퍼유저로 직접 로그인하는 것을 방지하는 정책이 있는 경우, 이 옵션을 사용하여 정책을 위반하지 않고 덤프를 생성할 수 있습니다.

예제

mydb라는 데이터베이스를 SQL 스크립트 파일로 덤프하려면:

pg_dump mydb > db.sql

새로 생성된 newdb라는 데이터베이스에 스크립트를 다시 로드하려면:

agens -d newdb -f db.sql

데이터베이스를 사용자 정의 타입 아카이브 파일로 덤프하려면:

pg_dump -Fc mydb > db.dump

데이터베이스를 디렉터리 형식 아카이브로 덤프하려면:

pg_dump -Fd mydb -f dumpdir

다섯 개의 워커 작업과 병렬로 데이터베이스를 디렉터리 형식 아카이브로 덤프하려면:

pg_dump -Fd mydb -j 5 -f dumpdir

아카이브 파일을 새로 생성된 newdb라는 데이터베이스에 다시 로드하려면:

pg_restore -d newdb db.dump

mytab이라는 단일 테이블을 덤프하려면:

pg_dump -t mytab mydb > db.sql

employee_log라는 테이블을 제외하고 detroit 스키마에서 이름이 emp로 시작하는 모든 테이블을 덤프하려면:

pg_dump -t 'detroit.emp*' -T detroit.employee_log mydb > db.sql

이름이 east 또는 west로 시작하고 gsm으로 끝나는 모든 스키마를 덤프하되, 이름에 test가 포함된 스키마는 제외하려면:

pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' mydb > db.sql

또는

pg_dump -n '(east|west)*gsm' -N '*test*' mydb > db.sql

이름이 ts_로 시작하는 테이블을 제외한 모든 데이터베이스 객체를 덤프하려면:

pg_dump -T 'ts_*' mydb > db.sql

-t 및 관련 스위치에서 대문자나 대소문자가 혼합된 이름을 지정하려면 이름을 큰따옴표로 묶어야 합니다. 그렇지 않으면 소문자로 변환됩니다. 그러나 큰따옴표는 셸에만 적용되므로 따옴표로 묶어야 합니다. 따라서 대소문자가 혼합된 단일 테이블을 덤프하려면 다음을 수행해야 합니다:

pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql

pg_restore

pg_restore는 pg_dump가 생성한 아카이브에서 AgensGraph 데이터베이스를 복원하는 유틸리티입니다. 데이터베이스가 저장된 시점의 데이터베이스를 재구성하는 데 필요한 명령을 실행합니다. 또한 아카이브 파일을 사용하면 pg_restore가 항목을 선택하거나 복원하기 전에 항목의 순서를 변경할 수 있습니다. 아카이브 파일은 전체 아키텍처에 적용될 수 있도록 설계되었습니다.

pg_restore는 두 가지 모드로 작동할 수 있습니다. 데이터베이스 이름이 지정되면 pg_restore는 지정된 데이터베이스에 연결하여 아카이브된 내용을 데이터베이스에 직접 복원합니다. 그렇지 않으면 데이터베이스를 재구축하는 데 필요한 SQL 명령이 포함된 스크립트가 작성되어 파일이나 표준 출력에 저장(기록)됩니다. 이 스크립트 출력은 pg_dump의 일반 텍스트 출력 형식과 동일합니다. 따라서 출력을 제어하는 일부 옵션은 pg_dump 옵션과 유사합니다.

물론 pg_restore는 아카이브 파일에 없는 정보를 복원할 수 없습니다. 예를 들어 “INSERT 명령으로 데이터 덤프” 옵션을 사용하여 아카이브를 생성한 경우, pg_restore는 COPY 문을 사용하여 데이터를 로드할 수 없습니다.

사용 방법:

pg_restore [OPTION]... [FILE]

옵션

pg_restore는 다음 명령줄 인수를 받습니다:

filename
복원할 아카이브 파일의 위치(또는 디렉터리 형식 아카이브의 경우 디렉터리)를 지정합니다. 지정하지 않으면 표준 입력이 사용됩니다.

-a
–data-only
스키마(데이터 정의)가 아닌 데이터만 복원합니다. 테이블 데이터, 대형 객체, 시퀀스 값이 아카이브에 있으면 복원됩니다.

이 옵션은 --section=data를 지정하는 것과 유사합니다.

-c
–clean
데이터베이스 객체를 재생성하기 전에 삭제합니다. (--if-exists를 사용하지 않으면, 대상 데이터베이스에 객체가 없을 때 무해한 오류 메시지가 생성될 수 있습니다.)

-C
–create
복원하기 전에 데이터베이스를 생성합니다. -clean과 함께 지정되면, 연결하기 전에 대상 데이터베이스를 삭제하고 다시 생성합니다.

이 옵션을 사용하면 -d로 명명된 데이터베이스는 초기 DROP DATABASE와 CREATE DATABASE 명령을 실행하는 데에만 사용됩니다. 모든 데이터는 아카이브에 나타나는 데이터베이스 이름으로 복원됩니다.

-d dbname
–dbname=dbname
데이터베이스 dbname에 연결하여 데이터베이스에 직접 복원합니다.

-e
–exit-on-error
데이터베이스에 SQL 명령을 전송하는 동안 오류가 발생하면 종료합니다. 기본값은 계속하여 복원 마지막에 오류 수를 표시하는 것입니다.

-f filename
–file=filename
생성된 스크립트의 출력 파일을 지정하거나, -l과 함께 사용하면 나열할 파일을 지정합니다. 기본값은 표준 출력입니다.

-F format
–format=format
아카이브 형식을 지정합니다. pg_restore가 자동으로 결정하므로 이 형식을 지정할 필요는 없습니다. 지정하는 경우 다음 중 하나일 수 있습니다:

  • c
    custom
    pg_dump의 사용자 정의 형식입니다.

  • d
    directory
    디렉터리 아카이브입니다.

  • t
    tar
    tar 아카이브입니다.

-I index
–index=index
명명된 인덱스의 정의만 복원합니다. 여러 -I 스위치로 여러 인덱스를 지정할 수 있습니다.

-j number-of-jobs
–jobs=number-of-jobs
데이터 로드, 인덱스 생성 또는 제약 조건 생성에 여러 동시 작업을 사용하여 pg_restore의 가장 시간이 많이 걸리는 부분을 실행합니다. 이 옵션은 멀티프로세서 시스템에서 실행되는 서버에 대용량 데이터베이스를 복원하는 시간을 크게 줄여 줍니다.

각 작업은 운영체제에 따라 프로세스 또는 스레드이며, 서버에 대한 별도의 연결을 사용합니다.

이 옵션의 최적 값은 서버, 클라이언트, 네트워크의 하드웨어 설정(예: CPU 코어 수, 디스크 구성)에 따라 달라집니다. 서버의 CPU 코어 수보다 큰 값을 설정하면 대부분의 경우 복원 시간을 단축할 수 있습니다. 너무 높은 값은 메모리 스래싱으로 인해 성능 저하를 유발할 수 있습니다.

이 옵션은 사용자 정의 및 디렉터리 아카이브 형식만 지원됩니다. 입력은 일반 파일이나 디렉터리여야 합니다. 데이터베이스 서버에 직접 연결하지 않고 스크립트를 내보낼 때는 이 옵션이 무시됩니다. --single-transaction 옵션과 함께 여러 작업을 사용할 수 없습니다.

-l
–list
아카이브의 내용을 나열합니다. 이 작업의 출력은 -L 옵션의 입력으로 사용할 수 있습니다. 나열되는 항목을 제한하려면 -l과 함께 -n 또는 -t와 같은 필터링 스위치를 사용하십시오.

-L list-file
–use-list=list-file
list-file의 아카이브 요소만 파일에 나열된 순서대로 복원합니다. -L과 함께 -n 또는 -t와 같은 필터링 스위치를 사용하면 복원되는 항목을 더욱 제한할 수 있습니다.

list-file은 일반적으로 이전 -l 작업의 출력을 편집하여 생성됩니다. 라인을 이동하거나 제거할 수 있으며, 라인 시작 부분에 세미콜론(;)을 사용하여 주석을 달 수 있습니다.

-n namespace
–schema=schema
명명된 스키마의 객체만 복원합니다. 여러 -n 스위치로 여러 스키마를 지정할 수 있습니다. 이 옵션을 -t와 결합하여 특정 테이블만 복원할 수 있습니다.

-O
–no-owner
원본 데이터베이스와 일치하도록 객체의 소유권을 설정하는 명령을 출력하지 않습니다. 기본적으로 pg_restore는 ALTER OWNER 또는 SET SESSION AUTHORIZATION 문을 통해 생성된 스키마 요소의 소유권을 설정합니다. 이 문은 수퍼유저(또는 스크립트의 모든 객체를 소유한 동일한 사용자)가 데이터베이스에 초기 연결을 하지 않으면 실패합니다. -O를 사용하면 모든 사용자 이름을 초기 연결에 사용할 수 있으며, 해당 사용자가 생성된 모든 객체를 소유하게 됩니다.

-P function-name(argtype [, …])
–function=function-name(argtype [, …])
명명된 함수만 복원합니다. 덤프 파일의 목차에 표시된 대로 함수 이름과 인수의 철자에 주의하십시오. 여러 -P 스위치로 여러 함수를 지정할 수 있습니다.

-s
–schema-only
아카이브의 (데이터가 아닌) 스키마 항목 범위 내에서 스키마(데이터 정의)만 복원합니다.

이 옵션은 --data-only의 반대입니다. 이는 --section=pre-data,--section=post-data를 지정하는 것과 유사합니다.

(이를 “schema”라는 단어를 다른 방식으로 사용하는 --schema 옵션과 혼동하지 마십시오.)

-S username
–superuser=username
트리거를 비활성화할 때 사용할 수퍼유저 이름을 지정합니다. 이는 --disable-triggers가 사용되는 경우에만 관련이 있습니다.

-t table
–table=table
명명된 테이블의 정의나 데이터를 복원합니다. 이를 위해 “table”에는 뷰, 구체화된 뷰, 시퀀스, 외래 테이블이 포함됩니다. 여러 -t 스위치를 작성하여 여러 테이블을 선택할 수 있습니다. 이 옵션을 -n 옵션과 결합하여 특정 스키마의 테이블을 지정할 수 있습니다.

참고: -t를 지정하면 pg_restore는 선택한 테이블이 의존하는 다른 데이터베이스 객체를 복원하려고 시도하지 않습니다. 따라서 특정 스키마 덤프의 결과가 그 자체로 정상적인 깨끗한 데이터베이스로 복원될 수 있다는 보장은 없습니다.

참고: 이 플래그는 pg_dump의 -t 플래그와 동일한 방식으로 작동하지 않습니다. 현재 pg_restore에는 와일드카드 매칭에 대한 규정이 없으며, -t에 스키마 이름을 포함할 수 없습니다.

-T trigger
–trigger=trigger
명명된 트리거만 복원합니다. 여러 -T 스위치로 여러 트리거를 지정할 수 있습니다.

-v
–verbose
상세 모드를 지정합니다.

-V
–version
pg_restore의 버전을 표시하고 종료합니다.

-x
–no-privileges
–no-acl
접근 권한(grant/revoke 명령) 복원을 방지합니다.

-1
–single-transaction
단일 트랜잭션으로 복원을 실행합니다(즉, BEGIN/COMMIT로 실행되는 명령을 래핑합니다). 이렇게 하면 모든 명령이 성공적으로 완료되거나 변경 사항이 적용되지 않습니다. 이 옵션은 --exit-on-error를 의미합니다.

–disable-triggers
이 옵션은 데이터 전용 복원을 수행할 때만 관련이 있습니다. 이는 데이터를 다시 로드하는 명령을 실행하는 동안 대상 테이블의 트리거를 일시적으로 비활성화하도록 pg_restore에 지시합니다. 데이터를 다시 로드하는 동안 호출을 원하지 않는 참조 무결성 검사가 있는 경우 또는 테이블에 다른 트리거가 있는 경우에 이 옵션을 사용하십시오.

현재 --disable-trigger에 대한 명령은 수퍼유저로 실행해야 합니다. 따라서 -S로 수퍼유저 이름을 지정하거나 pg_restore를 AgensGraph 수퍼유저로 실행하십시오.

–enable-row-security
이 옵션은 행 보안이 있는 테이블의 내용을 복원할 때만 관련이 있습니다. 기본적으로 pg_restore는 모든 데이터가 테이블로 복원되도록 row_security를 off로 설정합니다. 사용자가 행 보안을 우회할 충분한 권한이 없으면 오류가 발생합니다. 이 매개변수는 row_security를 on으로 설정하여 pg_restore가 행 보안이 있는 테이블의 내용을 복원할 수 있도록 합니다. 이 작업은 사용자가 덤프의 행을 테이블에 삽입할 권한이 없으면 실패할 수도 있습니다.

COPY FROM은 행 보안을 지원하지 않으므로, 이 옵션에서는 현재 덤프가 INSERT 유형이어야 합니다.

–if-exists
조건부 명령(예: IF EXISTS 절)을 사용하여 데이터베이스 객체를 정리합니다. 이 옵션은 –clean이 지정되지 않으면 유효하지 않습니다.

–no-data-for-failed-tables
기본적으로 테이블 생성 명령이 실패하더라도 테이블 데이터 생성이 복원됩니다. 이 옵션을 사용하면 해당 테이블의 데이터가 건너뛰어집니다. 이는 대상 데이터베이스에 원하는 테이블의 내용이 이미 있는 경우에 유용합니다. 예를 들어 PostGIS와 같은 PostgreSQL 익스텐션을 위한 보조 테이블이 이미 대상 데이터베이스에 로드되어 있을 수 있습니다. 이 옵션을 지정하면 중복되거나 오래된 데이터가 로드되는 것을 방지합니다.

이 옵션은 SQL 스크립트 출력을 생성할 때가 아니라 데이터베이스에 직접 복원할 때만 유효합니다.

–no-security-labels
보안 레이블을 복원하는 명령은 아카이브에 포함되어 있더라도 출력하지 않습니다.

–no-tablespaces
테이블스페이스를 선택하는 명령을 출력하지 않습니다. 이 옵션이 활성화되면 모든 객체가 복원 중 기본값인 모든 테이블스페이스에 생성됩니다.

–section=section
명명된 섹션만 복원합니다. 섹션 이름은 pre-data, data 또는 post-data일 수 있습니다. 이 옵션은 여러 섹션을 선택하기 위해 두 번 이상 지정할 수 있습니다. 기본값은 모든 섹션을 복원하는 것입니다.

data 섹션에는 실제 테이블 데이터와 대형 객체 정의가 포함됩니다. post-data 항목은 인덱스, 트리거, 규칙, 제약 조건(유효성 검사 제약 조건 제외)의 정의로 구성됩니다. pre-data 항목은 다른 모든 데이터 정의 항목으로 구성됩니다.

–strict-names
각 스키마(-n-schema-schema)와 테이블(-T-table) 한정자는 백업 파일의 스키마/테이블 하나 이상과 일치해야 합니다.

–use-set-session-authorization
객체 소유권을 식별하기 위해 ALTER OWNER 명령 대신 SQL 표준 SET SESSION AUTHORIZATION 명령을 출력합니다. 이렇게 하면 덤프가 표준을 준수할 수 있지만, 덤프의 객체 기록에 따라 제대로 복원되지 않을 수 있습니다.

-?
–help
pg_restore 명령줄 인수에 대한 도움말을 표시하고 종료합니다.

pg_restore는 연결 매개변수를 위한 다음 명령줄 인수도 받습니다:

-h host
–host=host
서버가 실행 중인 시스템의 호스트 이름을 지정합니다. 값이 슬래시로 시작하면 Unix 도메인 소켓의 디렉터리로 사용됩니다. 기본값은 (설정된 경우) PGHOST 환경 변수에서 가져옵니다. 그렇지 않으면 Unix 도메인 소켓 연결이 시도됩니다.

-p port
–port=port
서버가 연결을 수신하는 TCP 포트 또는 로컬 Unix 도메인 소켓 파일 확장자를 지정합니다. 기본값은 PGPORT 환경 변수이며 (컴파일된) 기본값으로 설정해야 합니다.

-U username
–username=username
연결할 사용자의 이름입니다.

-w
–no-password
암호를 입력하라는 프롬프트를 표시하지 않습니다. 서버에서 암호 인증이 필요하고 .pgpass 파일과 같은 다른 방법으로 암호를 사용할 수 없으면, 연결 시도가 실패합니다. 이 옵션은 암호를 입력할 사용자가 없는 배치 작업과 스크립트에 유용할 수 있습니다.

-W
–password
데이터베이스에 연결하기 전에 pg_restore를 실행하여 암호를 입력하게 합니다.

pg_restore는 서버가 암호 인증을 요청할 때 자동으로 암호를 요구하므로 이 옵션은 결코 필요하지 않습니다. 그러나 pg_restore는 서버가 암호를 원하는지 알아내기 위해 연결 시도를 낭비합니다. 경우에 따라 추가 연결 시도를 피하기 위해 -W를 입력하는 것이 좋습니다.

–role=rolename
덤프를 생성하는 데 사용할 롤 이름을 지정합니다. 이 옵션을 사용하면 pg_restore는 데이터베이스에 연결한 후 SET ROLE rolename 명령을 실행합니다. 이는 (-U로 지정된) 인증된 사용자가 pg_restore에 필요한 권한이 없지만 필요한 권한으로 전환할 권한이 있을 때 유용합니다. 수퍼유저로 직접 로그인하는 것을 방지하는 정책이 있는 경우, 이 옵션을 사용하여 정책을 위반하지 않고 덤프를 생성할 수 있습니다.

예제

mydb라는 데이터베이스를 사용자 정의 형식의 덤프 파일로 덤프했다고 가정합니다.

pg_dump -Fc mydb > db.dump

데이터베이스를 삭제하고 덤프에서 데이터베이스를 다시 생성하려면:

dropdb mydb
pg_restore -C -d postgres db.dump

-d 스위치에 명명된 데이터베이스는 클러스터의 어떤 데이터베이스든 될 수 있습니다. pg_restore는 이를 사용하여 mydb에 대한 CREATE DATABASE 명령을 실행합니다. -C를 사용하면 데이터는 항상 덤프 파일에 나타나는 데이터베이스 이름으로 복원됩니다.

newdb라는 새 데이터베이스에 덤프를 다시 로드하려면:

createdb -T template0 newdb
pg_restore -d newdb db.dump

-C를 사용하지 않고 복원할 데이터베이스에 직접 연결합니다. 새 데이터베이스를 template1이 아니라 template0에서 복제하여 초기에 비어 있는지 확인하십시오.

데이터베이스 항목을 재배열하려면 먼저 아카이브의 목차를 덤프해야 합니다.

pg_restore -l db.dump > db.list

목록 파일은 다음과 같이 헤더와 각 항목에 대한 라인으로 구성됩니다(예시):

;
; Archive created at Mon Sep 14 13:55:39 2009
;     dbname: DBDEMOS
;     TOC Entries: 81
;     Compression: 9
;     Dump Version: 1.10-0
;     Format: CUSTOM
;     Integer: 4 bytes
;     Offset: 8 bytes
;     Dumped from database version: 8.3.5
;     Dumped by pg_dump version: 8.3.8
;
;
; Selected TOC Entries:
;
3; 2615 2200 SCHEMA - public pasha
1861; 0 0 COMMENT - SCHEMA public pasha
1862; 0 0 ACL - public pasha
317; 1247 17715 TYPE public composite pasha
319; 1247 25899 DOMAIN public domain0 pasha

세미콜론은 주석의 시작을 표시하고, 라인 시작 부분의 숫자는 각 항목에 할당된 내부 아카이브 ID를 나타냅니다.

파일의 라인을 주석 처리하고, 삭제하고, 재정렬할 수 있습니다. 다음은 예시입니다:

10; 145433 TABLE map_resolutions postgres
;2; 145344 TABLE species postgres
;4; 145359 TABLE nt_header postgres
6; 145402 TABLE species_records postgres
;8; 145416 TABLE ss_old postgres

이는 pg_restore의 입력으로 사용할 수 있으며 항목 10과 6만 순서대로 복원됩니다.

pg_restore -L db.list db.dump

서버 도구

ag_ctl

ag_ctl은 AgensGraph 클러스터를 초기화하고 데이터베이스 서버를 시작, 중지 또는 재시작하거나, 실행 중인 서버의 상태를 표시하는 유틸리티입니다. 서버를 수동으로 시작할 수 있지만, ag_ctl은 로그 출력을 다시 연결하고 터미널/프로세스 그룹에서 적절히 분리하는 등의 작업을 수행합니다. 또한 제어된 종료를 위한 편리한 옵션을 제공합니다.

사용 방법:

  ag_ctl init[db]               [-D DATADIR] [-s] [-o "OPTIONS"]
  ag_ctl start   [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o "OPTIONS"]
  ag_ctl stop    [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]
  ag_ctl restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]
                 [-o "OPTIONS"]
  ag_ctl reload  [-D DATADIR] [-s]
  ag_ctl status  [-D DATADIR]
  ag_ctl promote [-D DATADIR] [-s]
  ag_ctl kill    SIGNALNAME PID

init 또는 initdb 모드는 새 AgensGraph 데이터베이스 클러스터를 생성합니다. 데이터베이스 클러스터는 단일 서버 인스턴스에서 관리되는 데이터베이스의 모음입니다. 이 모드는 initdb 명령을 호출합니다.

start 모드는 새 서버를 시작합니다. 서버는 백그라운드에서 시작되고 표준 입력은 /dev/null(Windows에서는 nul)에 연결됩니다. Unix 계열 시스템에서는 서버의 표준 출력과 표준 오류가 ag_ctl의 (표준 오류가 아닌) 표준 출력으로 전송됩니다. 그런 다음 ag_ctl의 표준 출력을 파일로 리디렉션하거나 로그 회전 프로그램인 rotatelogs와 같은 다른 프로세스로 내보내야 합니다. Windows에서는 기본적으로 서버의 표준 출력과 표준 오류가 터미널로 전송됩니다. 이 기본 동작은 -l을 사용하여 서버의 출력을 로그 파일에 추가함으로써 변경할 수 있습니다. -l 또는 출력 리디렉션 중 하나를 사용하는 것이 좋습니다.

stop 모드는 지정된 데이터 디렉터리에서 실행 중인 서버를 종료합니다. -m 옵션을 사용하면 세 가지 다른 종료 방법 중에서 선택할 수 있습니다. “Smart” 모드는 모든 활성 클라이언트가 연결 해제되고 온라인 백업이 완료될 때까지 대기합니다. 서버가 핫 스탠바이 상태이면, 모든 클라이언트가 연결 해제될 때 복구와 스트리밍 복제가 종료됩니다. “Fast” 모드(기본값)는 클라이언트가 연결 해제되기를 기다리지 않고 진행 중인 온라인 백업을 종료합니다. 모든 활성 트랜잭션이 롤백되고 클라이언트가 강제로 연결 해제되면 서버가 종료됩니다. “Immediate” 모드는 모든 서버 프로세스를 즉시 중단합니다. 이는 재시작 시 충돌 복구가 실행되도록 합니다.

restart 모드는 사실상 stop을 실행한 다음 start를 실행합니다. 이를 통해 agens 명령줄 옵션을 변경할 수 있습니다. 서버 시작 중에 명령줄에 지정된 상대 경로가 입력되면 재시작이 실패할 수 있습니다. reload 모드는 단순히 agens 프로세스에 SIGHUP 신호를 보내 구성 파일(postgresql.conf, pg_hba.conf 등)을 다시 읽습니다. 따라서 전체 재시작이 필요하지 않은 구성 파일 옵션을 변경할 수 있습니다.

status 모드는 서버가 지정된 데이터 디렉터리에서 실행 중인지 확인합니다. 실행 중이면 이를 호출하는 데 사용된 PID와 명령줄 옵션이 표시됩니다. 서버가 실행 중이 아니면 프로세스는 종료 상태 3을 반환합니다. 접근 가능한 데이터 디렉터리가 지정되지 않으면 프로세스는 종료 상태 4를 반환합니다.

promote 모드에서는 지정된 데이터 디렉터리에서 실행 중인 대기 서버에 복구를 종료하고 읽기/쓰기 작업을 시작하도록 지시합니다.

지정된 프로세스에 신호를 보내려면 kill 모드를 사용하십시오. 이는 kill 명령이 없는 Windows에서 특히 유용합니다. 지원되는 신호 이름 목록은 –help를 사용하십시오.

옵션

-c
–core-file
서버는 코어 파일 생성을 허용하기 위해 코어 파일에 저장된 소프트 리소스 제한을 해제합니다. 이는 실패한 서버 프로세스가 스택 추적을 얻을 수 있도록 하여 문제를 디버깅하거나 진단하는 데 유용합니다.

-D datadir
–pgdata datadir
데이터베이스 구성 파일의 파일 시스템 위치를 지정합니다. 생략하면 환경 변수 AGDATA가 사용됩니다.

-l filename
–log filename
서버 로그 출력을 filename에 추가합니다. 파일이 존재하지 않으면 해당 파일 이름으로 새 파일이 생성됩니다. umask가 077로 설정되므로 기본적으로 다른 사용자는 로그 파일에 접근할 수 없습니다.

-m mode
–mode mode
종료 모드를 지정합니다. mode는 smart, fast, immediate 중 하나의 첫 글자일 수 있습니다. 설정하지 않으면 fast가 사용됩니다.

-o options
agens 명령에 전달할 옵션을 지정합니다. 여러 옵션 호출이 추가됩니다.

옵션은 그룹으로 전달될 수 있도록 보통 작은따옴표나 큰따옴표로 묶습니다.

-o initdb-options
initdb 명령에 직접 전달할 옵션을 지정합니다.

옵션은 그룹으로 전달될 수 있도록 보통 작은따옴표나 큰따옴표로 묶습니다.

-p path
agens 실행 파일의 위치를 지정합니다. 기본적으로 agens 실행 파일은 ag_ctl과 동일한 디렉터리에서 실행되거나 하드 와이어된 설치 디렉터리에서 실패합니다. 일반적으로 사용하거나 agens 실행 파일을 찾을 수 없다는 오류가 없는 한 이 옵션을 사용할 필요는 없습니다.

init 모드에서는 이 옵션을 사용하여 initdb 실행 파일의 위치를 지정하십시오.

-s
–silent
오류 메시지만 출력할 수 있습니다.

-t
–timeout
시작 또는 종료 전에 대기할 최대 시간(초)입니다. 기본값은 PGCTLTIMEOUT 환경 변수의 값이거나, (설정되지 않은 경우) 60초입니다.

-V
–version
ag_ctl 버전을 인쇄하고 종료합니다.

–revision
agens 리비전 정보를 표시하고 종료합니다.

-w
시작 또는 종료가 완료될 때까지 대기합니다. 대기 모드는 종료에는 기본 옵션이지만 시작에는 그렇지 않습니다. 시작을 대기할 때 ag_ctl은 반복적으로 서버에 연결을 시도합니다. 종료를 대기할 때는 서버가 PID 파일을 제거할 때까지 대기합니다. 이 옵션을 사용하면 시작 시 SSL 암호를 입력할 수 있습니다. ag_ctl은 시작 또는 종료의 성공 여부에 따라 종료 코드를 반환합니다.

-W
시작 또는 종료가 완료될 때까지 대기하지 않습니다. 이는 start 및 restart 모드의 기본값입니다.

-?
–help
ag_ctl 명령줄 인수에 대한 도움말을 표시하고 종료합니다.

Windows용 옵션

-N servicename
등록할 시스템 서비스의 이름입니다. 이 이름은 서비스 이름과 표시 이름으로 사용됩니다.

-P password
사용자가 서비스를 시작할 수 있도록 하는 암호입니다.

-S start-type
등록할 시스템 서비스의 시작 유형입니다. 시작 유형은 auto, demand 또는 둘 중 하나의 첫 글자일 수 있습니다. 생략하면 auto가 사용됩니다.

-U username
서비스를 시작할 사용자의 이름입니다. 도메인 사용자의 경우 DOMAIN\username 형식을 사용하십시오.

환경

AGDATA 기본 AGDATA 데이터 디렉터리 위치입니다.

예제

서버 시작

서버를 시작하려면 다음을 사용합니다:

ag_ctl start

서버를 시작하고 서버가 연결을 수락할 때까지 대기하려면:

ag_ctl -w start

포트 5432를 사용하여 서버를 시작하고 fsync 없이 실행하려면 다음을 사용합니다:

ag_ctl -o "-F -p 5432" start
서버 중지

서버를 중지하려면 다음을 사용합니다:

ag_ctl stop

-m 옵션을 사용하여 서버가 종료되는 방식을 제어할 수 있습니다.

ag_ctl stop -m fast
서버 재시작

서버 재시작은, ag_ctl이 이전에 실행된 인스턴스에 전달한 명령줄 옵션을 저장/재사용하는 경우를 제외하면, 서버를 중지하고 다시 시작하는 것과 동일합니다. 가장 간단한 형태로 서버를 재시작하려면 다음을 사용합니다:

ag_ctl restart

서버 재시작을 위해 서버를 중지하고 재시작을 대기합니다.

ag_ctl -w restart

포트 5432를 사용하여 재시작하려면, 재시작 시 fsync를 비활성화합니다.

ag_ctl -o "-F -p 5432" restart
서버 상태 표시

다음은 ag_ctl의 샘플 상태 출력입니다.

ag_ctl status
ag_ctl: server is running (PID: 2823)
/path/to/AgensGraph/bin/postgres

이는 재시작 모드에서 호출될 명령줄입니다.

pg_upgrade

pg_upgrade를 사용하면 메이저 버전 업그레이드에 필요한 데이터 덤프/재로드 없이 데이터 파일에 저장된 데이터를 최신 AgensGraph 메이저 버전으로 업그레이드할 수 있습니다. pg_upgrade는 새 시스템 테이블을 생성하고 이전 사용자 데이터 파일을 재사용하여 빠른 업그레이드를 수행합니다.

사용 방법:

pg_upgrade [OPTION]...

옵션

pg_upgrade는 다음 명령줄 인수를 받습니다:

-b bindir
–old-bindir=bindir
이전 AgensGraph bin 디렉터리(환경 변수: PGBINOLD)

-B bindir
–new-bindir=bindir
새 AgensGraph bin 디렉터리(환경 변수: PGBINNEW)

-c
–check
데이터를 변경하지 않고 클러스터를 확인합니다.

-d datadir
–old-datadir=datadir
이전 클러스터 데이터 디렉터리(환경 변수: PGDATAOLD)

-D datadir
–new-datadir=datadir
새 클러스터 데이터 디렉터리(환경 변수: PGDATANEW)

-j
–jobs
동시에 사용할 수 있는 프로세스 또는 스레드의 수

-k
–link
파일을 새 클러스터로 복사하는 대신 하드 링크를 사용합니다.

-o options
–old-options options
이전 agens 명령에 직접 전달되는 옵션으로 여러 옵션 호출이 추가됩니다.

-O options
–new-options options
새 agens 명령에 직접 전달되는 옵션으로 여러 옵션 호출이 추가됩니다.

-p port
–old-port=port
이전 클러스터 포트 번호(환경 변수: PGPORTOLD)

-P port
–new-port=port
새 클러스터 포트 번호(환경 변수: PGPORTNEW)

-r
–retain
성공적으로 완료된 후에도 SQL 및 로그 파일을 유지합니다.

-U username
–username=username
클러스터의 설치 사용자 이름(환경 변수: PGUSER)

-v
–verbose
상세 내부 로깅을 활성화합니다.

-V
–version
버전 정보를 표시하고 종료합니다.

-?
–help
도움말을 표시하고 종료합니다.

사용법

다음은 pg_upgrade를 사용하여 업그레이드를 수행하는 단계입니다:

  1. 기존 데이터베이스 클러스터를 백업합니다.

mv /user/local/AgensGraph /usr/local/AgensGraph.old
  1. 새 AgensGraph 바이너리를 설치합니다.

  2. 새 AgensGraph 클러스터를 초기화합니다.

initdb
  1. 기존 클러스터와 새 클러스터의 서비스를 종료합니다.

ag_ctl -D /opt/AgensGraph/1.2/db_cluster stop
ag_ctl -D /opt/AgensGraph/1.3/db_cluster stop
  1. pg_upgrade를 실행합니다.

    pg_upgrade -d oldCluster/data -D newCluster/data -b oldCluster/bin -B newCluster/bin
    

    또는

    export PGDATAOLD=oldCluster/data
    export PGDATANEW=newCluster/data
    export PGBINOLD=oldCluster/bin
    export PGBINNEW=newCluster/bin
    pg_upgrade
    
  2. 새 AgensGraph를 시작합니다.

ag_ctl start
  1. 업그레이드 후 다음 작업을 수행합니다.

    • 통계
      옵티마이저 통계는 pg_upgrade에 의해 전송되지 않으므로, 업그레이드 마지막에 명령을 실행하여 해당 정보를 다시 생성해야 합니다. 새 클러스터에 맞게 연결 매개변수를 설정해야 할 수도 있습니다.

    • 이전 클러스터 삭제 업그레이드에 만족하면 pg_upgrade 완료 시 언급된 스크립트를 실행하여 이전 클러스터의 데이터 디렉터리를 삭제할 수 있습니다.