PostgreSQL Veritabanı İstemcileri: psql
Düzeltme Öner

psql PostgreSQL sunucu interaktif terminal istemcisidir. PostgreSQL sunucuda sorgu çalıştırma, sorgu sonuçlarını görüntüleme, kabuk parametreleri ile dosya veya komut gönderme, betik içerisinde kullanarak otomatik işlemler yaptırabilir.

Genel Kullanımı

psql [seçenekler...] [veritabanı[kullanıcı]]

psql terminali ile sunucuya bağlanma:

su - postgres
$ psql
psql (11.5)
Type "help" for help.

postgres=#
psql için kullanılan parametreler  
-h (–host=) Sunucu adı veya IP adresi
-p (–port=) PostgreSQL port numarası
-U (–username=) Kullanıcı adı
-W (–password) Parola sor
-w Parola sorma
-d (–dbname=) Bağlanılacak veritabanı adı
$ psql "service=myservice sslmode=require"
$ psql postgresql://dbmaster:5433/mydb?sslmode=require

Kullanıcı/parola ile TCP üzerinden veritabanına bağlanma:

$ psql -h 127.0.0.1 -U testuser -W test
Password for user testuser:
psql (11.5)
Type "help" for help.

test=>
Sık kullanılan parametreler  
-V (–version) PostgreSQL sunucu sürüm bilgisi görüntüle
-? (–help) Yardım görüntüle
-c (–command=) Belirtilen SQL komutlarını çalıştır
-f (–file=) Dosyadan SQL komutları çalıştır
-o (–output=) Komut çıktısını dosyaya yazdır

Etkileşimli (interaktif) kabuk kullanma:

$ psql
psql (11.5)
Type "help" for help.

postgres=# \c ulkeler
You are now connected to database "ulkeler" as user "postgres".
ulkeler=# SELECT * FROM yerel_adlari;

Etkileşimsiz kabuk kullanma (dışardan komut yollama):

$ psql -c 'SELECT * FROM doviz;' ulkeler

Komut çıktısını kullanma (pipe):

$ echo '\c ulkeler \\ SELECT * FROM yerel_adlari;' | psql

Dosyayı girdi olarak kullanma:

$ psql ulkeler < sorgu.sql

Dosyayı çıktı olarak kullanma:

$ psql -c 'SELECT * FROM diller;' ulkeler > sonuc.sql

Koşullu belirteç kullanma (EOF):

$ psql <<EOF
> \c ulkeler
> SELECT * FROM doviz;
> EOF

Oracle’ın sqlplus komut satırı aracı öntanımlı autocommit off ile gelirken, psql öntanımlı autocommit on olarak çalışır. \set AUTOCOMMIT off komutu ile autocommit o oturum için kapatılabilir. \echo :AUTOCOMMIT ile autocommit durumu görülebilir. Kalıcı ekleme için ~/.psqlrc dosyasının içine \set AUTOCOMMIT off komutu eklenebilir. Autocommit açıkken transaction yapmak için:

BEGIN;
  INSERT ...;
  UPDATE ...;
COMMIT;
  psql istemci temel komutları    
\l Veritabananlarını listeleme \q psql’den çıkış
\c Belirtilen veritabanına bağlanma \help (\?) Yardım
\dt Tabloları listeleme \copyright Lisans bilgileri
\dT Veri tiplerini listeleme \conninfo Sunucu bağlantı bilgileri
\du (\dg) Veritabanı rol/kullanıcı listeleme \password Rol parolası belirleme
\dx Yüklü olan eklentileri listeleme \encoding Tanımlı olan karakter kodlaması

Öntanımlı olarak sql sorgularının çıktıları sql biçeminde gelir psql üzerinden csv biçiminde çıktı almak için:

$ psql -d ulkeler -A -F"," -c "select * from doviz" > doviz.csv
hede=# \f ','
Field separator is ",".
hede=# \a
Output format is unaligned.
hede=# select * from personel;

psql üzerinden örnek veri yükleme:

su - postgres
$ psql <veritabanı_ismi>  < <sql dosyası>