PSQL
apt install postgresql-client-xx
root@depgsql01:~# su - postgres
postgres@depgsql01:~$ psql
psql (13.6 (Debian 13.6-1.pgdg110+1))
Type “help” for help.
postgres=# select version();
version
--------------------------------------------------------------
PostgreSQL 13.6 (Debian 13.6-1.pgdg110+1) on x86_64-pc-linuxgnu,
compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
(1 row)
SQL komutlarını ve PL/pgSQL bloklarını çalıştırmayı ve veritabanını yönetmeyi sağlar.
Veritabanını yönetmek için bir çok grafik arayüzlü program olsa da terminale de (command prompt) aşina olmakta fayda vardır. postgresql.org/download linkinden sürümünüze uygun repositori eklendikten sonra apt install komutu ile yükleyebilirsiniz.
Not: postgresql server yüklendiğinde client paketleri de otomatik olarak yüklenmektedir.
PSQL‘ i kullanarak yapılabilecek işlemler;
- SQL komutlarını ve PL/pgSQL bloklarını çalıştırabilir, düzenleyebilir, saklayabilir ve geri getirebilir.
- Sorgu sonuçlarını bir rapor düzeninde formatlayabilir.
- Herhangi bir tablo için sütun tanımlarını listeleyebilir.
- Veritabanındaki verilere ulaşıp bunları kopyalayabilir.
İşletim sistemine root ile bağlı isek önce postgres kullanıcısına geçiyoruz -> su - postgres. Sonrasında psql komutunu çalıştırıyoruz. (postgres veritabanı sunucusu üzerinde)
\? # psql yardım.
\conninfo # Bağlı olunan veritabanı ve port görülebilir.
\h # SQL komutları ile ilgili yardım.
\h alter table # alter table komutu ile ilgili yardım.
\l # Veritabablarını listeler.
# Farklı bir veritabanına bağlantı
psql -d veritabanı_adı -U kullanıcı_adı –W
# Örnek;
psql -d dvdrental -U postgres -W
#Örnek 1 Başka bir makinede bulunan veritabanına bağlanmak için;
psql -h 10.71.6.22 -d dvdrental -U dbuser -W
# Örnek 2;
psql -h 10.71.6.22 –p 5433 -d dvdrental -U dbuser -W
#Her seferinde şifre girmemek için
PGPASSWORD="şifre" psql -h 10.71.6.22 –p 5433 -d dvdrental -U dbuser
Not: Ağ üzerindeki veritabanına bağlanabilmek için işletim sistemi tarafında (iptables)pg_hba.conf dosyasındaki güvenlik ve postgressql.conf’ daki listen_adresses ayarlarının doğru yapılmış olması gerekir (3. ve 4. bölümlerde anlatılmaktadır).
Örnek 1’de 10.71.6.22 sunucusundaki dvdrental adındaki veritabanına default port
5432’den bağlantı isteği gönderir. Şifre girilerek veritabanına bağlantı sağlanır.
Postgresql 5432‘den farklı bir porttan çalışıyorsa (VT sunucusu üzerindenetstat –ntlp komutu çalıştırılarak hangi porttan çalıştığı görülebilir);
Örnek 2’de olduğu gibi postgresql 5433 portundan çalışıyorsa -p 5433 port parametresi de eklenerek bağlantı sağlanır.
Farklı bir veritabanına geçmek için
\c dvdrental
\c veritabanı_adı -U kullanıcı_adı
\d #Tüm tabloları(relations) listeler.
\d+ #Tabloları ek bilgilerle listeler.
\d+ tablo_ismi #Tablo bilgileri.
\dt #public schemasındaki tabloları listeler.
\dt tests.* #tests schemasındaki tabloları listeler.
\dn #Bağlı olunan veritabanındaki schemaları lister.
\dv #viewları listeler.
\du #kullanıcıları (user/role) listeler.
\dp+ tablo_ismi #Tablo erişim haklarını listeler.
dvdrental=# \d+ city
Table “public.city”
Column|Type|Collation|Nullable|Default|Storage|Stats
target|Description
-----------+-------------+-----------+----------+------------+----------+----
city_id | integer | | not null | | plain | |
city | character v | | not null | | extended | |
country_id | smallint | | not null | | plain | |
last_update| timestamp wi| | not null | | plain | |
Indexes:
“city_pkey” PRIMARY KEY, btree (city_id)
“idx_fk_country_id” btree (country_id)
Foreign-key constraints:
“fk_city” FOREIGN KEY (country_id) REFERENCES
country(country_id)
Referenced by:
TABLE “address” CONSTRAINT “fk_address_city” FOREIGN KEY
(city_id) REFERENCES city(city_id)
Triggers:
last_updated BEFORE UPDATE ON city FOR EACH ROW EXECUTE
FUNCTION last_updated()
Access method: heap
SELECT version(); #PostgreSQL versiyonu
\g #Bir önceki komutu tekrar çalıştırmak için
\s #Komut geçmişini görmek için
#Komut geçmişini bir dosyaya kaydetmek için;
\s komut_geçmişi.txt
#Bir dosyadan psql komutlarını çalıştırmak için;
\i dosya_adı.sql
#Çalıştırılan SQL’in ne kadar sürede tamamlandığını verir.
\timing on/off
# İşletim sisteminin editörü ile SQL’i açıp düzenleme imkanı sağlar.
\e
# Son çalıştırılan SQL’ i her 5 saniyede bir çalıştırır.
\watch 5
\H # Çıktıyı html formatında verir.
\! ifconfig # İşletim sistemi komutları.
#Çıkış
\q
\exit
\quit
