명령어/DB

[PostgreSQL] \l 서버에 있는 데이터베이스 목록을 본다

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

설치·접속: PostgreSQL 설치와 접속

부제: 이 서버 안에 어떤 DB가 있고 누가 소유·인코딩인지 한눈에 훑는다

psql -c '\l'      # 데이터베이스 목록 (psql 안에서도 동일)
psql -c '\l+'     # 용량·설명까지 붙은 상세 목록
psql -l           # 목록만 보고 바로 종료하는 셸 플래그
                                                   List of databases
   Name    |  Owner   | Encoding | Locale Provider | Collate |  Ctype  | ICU Locale | ICU Rules |   Access privileges
-----------+----------+----------+-----------------+---------+---------+------------+-----------+-----------------------
 postgres  | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           |
 shop      | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           |
 template0 | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/postgres          +
           |          |          |                 |         |         |            |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/postgres          +
           |          |          |                 |         |         |            |           | postgres=CTc/postgres
(4 rows)

\l(소문자 엘)은 접속한 서버 클러스터에 존재하는 모든 데이터베이스를 나열한다. psql 셸 안에서 치는 메타명령이지만 psql -c '\l'처럼 셸에서 바로 뽑을 수도 있다. template0·template1은 새 DB를 만들 때 골격이 되는 템플릿이라 항상 보인다. 인코딩이나 Collate가 어긋난 DB를 찾을 때, 혹은 새 서버에 어떤 DB가 올라와 있는지 파악할 때 제일 먼저 치는 명령이다.

이렇게도 쓴다

용량과 설명까지 확인한다. (+ 를 붙이면 상세 컬럼 추가)

psql -c '\l+'

 

접속하지 않고 셸에서 바로 목록만 확인한다.

psql -l

 

특정 DB만 패턴으로 걸러 본다.

psql -c '\l shop'

 

DB 이름만 뽑아 셸 스크립트에 넘긴다. (조합: -At + tail)

psql -Atc 'SELECT datname FROM pg_database WHERE NOT datistemplate'

 

각 DB 용량을 사람이 읽기 좋은 단위로 정렬한다. (SQL 조합)

psql -c "SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database ORDER BY pg_database_size(datname) DESC;"
반응형