한양과학기술고등학교

에듀테크 프로젝트 대시보드

psql 사용법

메타명령 \d \timing \copy \watch

psql 은 공식 대화형 클라이언트입니다. 백슬래시(\)로 시작하는 것은 SQL 이 아니라 psql 자체 명령입니다.

1. 접속

psql "postgresql://school:pw@localhost:5432/school"
psql -h localhost -U school -d school       # 나눠 쓰기
sudo -u postgres psql -d school             # 로컬 슈퍼유저

2. 객체 살펴보기

명령내용
\l데이터베이스 목록 (\l+ 크기 포함)
\dt / \dt+테이블 목록 / 크기·설명 포함
\d 테이블컬럼·인덱스·제약·트리거
\di \dv \df \dn인덱스 / 뷰 / 함수 / 스키마
\du역할 목록과 속성
\sf 함수명함수 정의 출력

3. 자주 쓰는 토글·유틸

psql 프롬프트
\x auto        -- 넓은 결과는 세로 표시 (한 줄이 화면보다 길 때)
\timing on     -- 매 쿼리 실행시간 표시
\e             -- 외부 에디터로 쿼리 편집
\i script.sql  -- 파일 실행
\copy (SELECT * FROM t) TO 'out.csv' CSV HEADER   -- 클라이언트측 파일로
SELECT now(); \watch 2   -- 2초마다 반복 실행
\pset null '∅'

4. 스크립트 모드

psql -d school -v ON_ERROR_STOP=1 -f migrate.sql   # 에러 시 즉시 중단
psql -d school -Atc "SELECT count(*) FROM users"    # 값만 출력 (스크립트용)
psql -d school -c "\copy users FROM 'users.csv' CSV HEADER"
\copy vs COPY
  • COPY — 서버가 서버 파일시스템을 읽음 (슈퍼유저/pg_read_server_files 필요)
  • \copy — psql 이 클라이언트에서 읽어 스트리밍 (권한 불필요, 원격에서도 동작)
"트랜잭션은 짧게, 잠금은 더 짧게"