반응형
설치·접속: PostgreSQL 설치와 접속
부제: 미리 작성해둔 .sql 스크립트를 psql 세션 안에서 그대로 돌린다
# psql 안에서
# \i /path/to/report.sql
psql -d shop -c '\i /var/lib/postgresql/report.sql' # 셸에서 바로
psql -d shop -f report.sql # -f 플래그도 동일 효과
product | total_qty
---------+-----------
item3 | 64
item11 | 62
item17 | 56
(3 rows)\i(include)는 지정한 SQL 파일을 읽어 현재 세션에서 실행한다. 반복해서 쓰는 리포트 쿼리, 스키마 생성 DDL, 시드 데이터 삽입 같은 걸 파일로 관리하고 \i로 불러 쓰면 매번 손으로 치지 않아도 된다. 셸에서 한 번에 돌리려면 psql -f 파일이 사실상 같은 일을 한다. 파일 안에서 또 다른 \i를 호출해 스크립트를 계층으로 구성할 수도 있고, \ir을 쓰면 현재 파일 기준 상대경로로 불러온다. 마이그레이션이나 초기 셋업을 코드로 관리할 때 핵심이 되는 명령이다.
이렇게도 쓴다
셸 리다이렉션 대신 -f 플래그로 파일을 실행한다.
psql -d shop -f schema.sql
현재 스크립트 기준 상대경로로 다른 파일을 불러온다. (\ir)
psql -d shop
# \ir ./seeds/users.sql
실행 시간을 함께 재며 스크립트를 돌린다. (조합: \timing)
psql -d shop -c '\timing on' -f report.sql
에러가 나면 즉시 중단하도록 강제한다. (조합: ON_ERROR_STOP)
psql -d shop -v ON_ERROR_STOP=1 -f migrate.sql
여러 스키마 파일을 순서대로 적용한다. (조합: 셸 반복문)
for f in 01_schema.sql 02_index.sql 03_seed.sql; do psql -d shop -f "$f"; done반응형
'명령어 > DB' 카테고리의 다른 글
| [PostgreSQL] \x 넓은 결과를 세로로 펼쳐 본다 (0) | 2026.07.30 |
|---|---|
| [PostgreSQL] \l 서버에 있는 데이터베이스 목록을 본다 (0) | 2026.07.30 |
| [PostgreSQL] \d 테이블·객체의 구조를 뜯어본다 (0) | 2026.07.30 |
| [PostgreSQL] work_mem와 정렬 spill — 큰 ORDER BY가 디스크로 새는 순간 잡아내기 (0) | 2026.07.23 |
| [PostgreSQL] 윈도우 프레임 ROWS/RANGE BETWEEN으로 이동평균·누적합을 낸다 (0) | 2026.07.23 |