Link Search Menu Expand Document

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=#
Parametresiz çalıştırıldığında bağlantıyı yaptığımız sistem kullanıcısı ile yereldeki PostgreSQL soketine bağlanır!
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
-wParola 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ı  
\lVeritabananlarını listeleme\qpsql’den çıkış
\cBelirtilen veritabanına bağlanma\help (\?)Yardım
\dtTabloları listeleme\copyrightLisans bilgileri
\dTVeri tiplerini listeleme\conninfoSunucu bağlantı bilgileri
\du (\dg)Veritabanı rol/kullanıcı listeleme\passwordRol parolası belirleme
\dxYüklü olan eklentileri listeleme\encodingTanı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ı>