명령어/DB

[PostgreSQL] \i SQL 파일을 실행한다

jykim23 2026. 7. 30. 22:10
반응형

설치·접속: 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
반응형