PostgreSql de bir veritabanının backup'ı aşağıdaki gibi alınabilir :
pg_dump -U postgres -h localhost db_adi | gzip > /db_adi.sql.gz
kullanıcı adı postgres'dir. db_adi veritabanın adıdır. Backup root içine alınmaktadır.
Restore etmek için ise
gunzip db_adi.sql.gz ile zip açıldıktan sonra aşağıdaki şekilde restore edilebilir
psql db_adi < db_adi.sql
Sadece bir tabloyu backup almak için
pg_dump db_adi --table="table_adı" | gzip > db_adi.sql.gz
Sadece data yapısı ve insert script'lerini aşağıdaki gibi alabilirsiniz :
pg_dump db_adi --data-only --column-inserts | gzip > db_adi.sql.gz
| gzip sadece backup alınan dosyanın sıkıştırılması içindir. .gz dosyasını gunzip dosya_adi.sql.gz ile açabilirsiniz
pg_dump alınırken text formatında (sql komutları şeklinde) backup alınır ise bu backup psql ile restore edilir. Eğer backup text formatında alınmaz ise (-Fc, -Fd, Ft gibi formatlar verilirse) , pg_restore ile restore edilir. pg_restore ile belirli bir tablonun restore etmesi gibi özellikler bulunmaktadır. psql sadece backup dosyasında sql kodlarını çalıştırır
Bir tabloda duplicate (tekrarlı) kayıtların silinmesi için aşağıdaki gibi bir sorgu çalıştırabilirsiniz:
DELETE FROM tablo_adi WHERE
id IN ( SELECT id FROM (SELECT id, ROW_NUMBER()
OVER (partition BY sutun_adı ORDER BY id) AS rnum
FROM tablo_adi) t WHERE t.rnum > 1);
Yukarıdaki örnekte id alanına göre en küçük olan değer bırakılmaktadır.
Bu sorgu için
https://wiki.postgresql.org/wiki/Deleting_duplicates adresine bakabilirsiniz.
Farklı kriterler kullanabilirsiniz. Örneğin name='Ali' olanlar için duplicated kayıtları silecekseniz aşağıdaki gibi kriteri ekleyebilirsiniz:
DELETE FROM tablo_adi WHERE name='Ali' and
id IN ( SELECT id FROM (SELECT id, ROW_NUMBER()
OVER (partition BY sutun_adı ORDER BY id) AS rnum
FROM tablo_adi where name='Ali' ) t WHERE t.rnum > 1);
Postgresql de aşağıdaki gibi bir yapı ile sorgu sonucu CSV dosyasına yazdırabilirsiniz:
Copy (Select * From TableAdi) To '/tmp/dosya_adi.csv' With CSV DELIMITER ',';
Select sonucu dosya_adi.csv dosyasına sütunların arasına , koydurularak CSV formatında yazdırılmış olur