$ dbaguide.com / cheat-sheets / postgresql

psql CLI Hızlı Referans

PostgreSQL Komut Satırı Tam Referansı

v16 / v17 uyumlu
Güncelleme: Ekim 2026 · Production-grade
PG
01

Bağlantı Komutları

KOMUTAÇIKLAMA
psql -U postgres -d mydbKullanıcı ve veritabanı belirterek bağlan
psql -h 192.168.1.10 -p 5432 -U app_user -d prod_db
↳ Uzak sunucuya bağlan
psql "postgresql://user:pass@host:5432/dbname"
↳ Connection string (URI) formatı
psql -U postgres -d mydb -c "SELECT version();"
↳ Tek komut çalıştır ve çık
psql -U postgres -f /path/to/script.sql
↳ SQL dosyası çalıştır
PGPASSWORD=secret psql -U user -d dbEnv değişkeni ile şifre
psql -U postgres -d mydb -qQuiet mode (mesajları bastır)
.pgpass dosyası: hostname:port:database:username:password — chmod 600 olmalı.
05

Değişkenler & Ayarlar

KOMUTAÇIKLAMA
\set VAR valueDeğişken tanımla
\unset VARDeğişkeni sil
\setTüm değişkenleri listele
SELECT :'VAR';Değişkeni sorguda kullan
\echo :VARDeğişken değerini yazdır
\setenv PGTZ 'UTC'Ortam değişkeni ayarla
ÖRNEK KULLANIM
\set schema public SELECT * FROM :'schema'.users LIMIT 10;
+

Yardım & Pratik Komutlar

\?Tüm meta komutları listele
\h SELECTSQL komutu sözdizimi yardımı
\gxSon sorguyu expanded modda çalıştır
\watch 5Son sorguyu 5 sn'de bir tekrarla
\errverboseSon hatayı tüm detaylarıyla göster
02

Meta Komutlar (Backslash Commands)

Veritabanı & Bağlantı
\l veya \listTüm veritabanlarını listele
\c mydbVeritabanı değiştir
\conninfoAktif bağlantı bilgilerini göster
\qpsql'den çık
Tablo & Şema
\dtGeçerli şemadaki tabloları listele
\dt public.*public şemasındaki tüm tablolar
\d tablenameTablo yapısını göster
\d+ tablenameDetaylı tablo bilgisi (boyut dahil)
\dnŞemaları listele
\dn+Şemalar + izinler
\dvView'ları listele
\dmMaterialized view'ları listele
\diİndeksleri listele
\dfFonksiyonları listele
\dsSequence'ları listele
Kullanıcı & Yetki
\duRoller ve kullanıcıları listele
\dp tablenameTablo izinlerini göster
\z tablename\dp ile aynı
Herhangi bir meta komuta + ekleyerek (ör. \dt+, \df+) boyut, açıklama ve sahip bilgisini görebilirsiniz. \? tüm meta komutları listeler.
08

.psqlrc Örnek Yapılandırma

-- ~/.psqlrc (her psql oturumunda otomatik yüklenir) \set QUIET 1 \timing on \x auto \set PROMPT1 '%[%033[1;32m%]%n@%/%[%033[0m%]# ' \set HISTSIZE 10000 \set COMP_KEYWORD_CASE upper \unset QUIET
03

Çıktı & Format Ayarları

KOMUTAÇIKLAMA
\xExpanded (dikey) modu aç/kapat
\x autoOtomatik genişletilmiş mod
\aAligned / unaligned mod değiştir
\tSadece satırları göster (tuple only)
\timingSorgu süresini ölç ve göster
\pset border 2Çerçeve kalınlığı ayarla
\pset format csvCSV formatında çıktı
\o /tmp/output.txtÇıktıyı dosyaya yönlendir
\oDosyaya yönlendirmeyi kapat
\HHTML çıktı modu
04

Sorgu & Script Yönetimi

KOMUTAÇIKLAMA
\eSorguyu harici editörde aç ($EDITOR)
\ef function_nameFonksiyon tanımını editörde aç
\ev view_nameView tanımını editörde aç
\gSon sorguyu tekrar çalıştır
\g /tmp/result.csvSon sorguyu dosyaya kaydet
\i /path/to/file.sqlSQL dosyasını çalıştır
\ir relative/path.sqlGöreli yolda SQL dosyası çalıştır
\sKomut geçmişini göster
\s /tmp/history.sqlGeçmişi dosyaya kaydet
06

COPY & Veri İçe/Dışa Aktarma

KOMUTAÇIKLAMA
\copy table TO '/tmp/out.csv' CSV HEADER
↳ Tabloyu CSV'ye aktar (istemci taraflı)
\copy table FROM '/tmp/in.csv' CSV HEADER
↳ CSV'den tabloya aktar
\copy (SELECT ...) TO '/tmp/q.csv' CSV HEADER
↳ Sorgu sonucunu CSV'ye aktar
\copy table TO STDOUTStandart çıktıya aktar
\copy istemci taraflıdır; COPY sunucu taraflıdır. Dosya izinleri farklıdır.
07

Hata Ayıklama & Bilgi Sorguları

pg_stat_activity · pg_stat_user_tables · pg_locks
Aktif Bağlantılar
-- Aktif bağlantılar SELECT pid, usename, application_name, state, query FROM pg_stat_activity WHERE state != 'idle';
Tablo Boyutları
-- Tablo boyutları SELECT relname, pg_size_pretty( pg_total_relation_size(relid)) FROM pg_stat_user_tables ORDER BY pg_total_relation_size(relid) DESC;
Uzun Süren Sorgular
-- Uzun süren sorgular SELECT pid, now() - query_start AS duration, query FROM pg_stat_activity WHERE state = 'active' AND now() - query_start > interval '5 min';
Lock Bekleyenler
-- Lock bekleyenler SELECT pid, relation::regclass, mode, granted FROM pg_locks WHERE NOT granted;