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ı>