PostgreSQL – CSV
PostgreSQL ile CSV çıktı almak
PostgreSQL native olarak CSV dosya biçimini destekler. CSV dosyasından veri alıp bir tabloya ekleyebilir veya herhangi bir sorgunun sonucunu CSV dosyası olarak kaydedebilirsiniz. Kaydetmenin dışında örneğin çıktıyı stdout’a yönlendirip dosya daha diske yazılmadan zipleyebilirsiniz. Bütün bunları COPY komutu ile yapıyoruz. Bir test tablosu oluşturalım, içerisine veri basalım ve sonra da bu tablodan CSV çıktısı üretelim;
Tablo oluşturmak için sorgumuz;
CREATE TABLE csvtest AS SELECT * FROM (VALUES (1,'a'), (2,'b'), (3,'c')) AS foo(id, value);
CSV çıktısı için; TO
‘dan sonra dosya yolu geliyor.
COPY csvtest TO '/tmp/csvtest.csv' (FORMAT csv);
Dosyamız hazır; cat
bash komutu ile içeriğini görebiliriz.
Farklı parametreler vererek çıktımızın biçimini değiştirebiliriz. Aşağıda önce yeni bir kayıt ekliyorum. Daha sonra COPY
komutunu kullanarak dosyayı oluşturuyorum. En son da psql’den çıkıp dosyanın içeriğini görüntülüyorum.
Gördüğünüz gibi;
- Tablodaki kayıtları id alanına göre büyükten küçüğe dizdik.
(SELECT * FROM csvtest ORDER BY 1 DESC)
- Alanlar isimlerinin en başta listelenmesi için
HEADER true
, - noktalı virgül (;) ile ayrılmasını sağlamak için
DELIMITER ';'
- çıktıdaki value alanındaki null olmayan değerlerin çift tırnak ile kaplanmasını sağlamak için
QUOTE '"', FORCE_QUOTE (value)
- son olarak null olan değerler yerine
<NULL>
yazılmasını sağlamak için deNULL '<NULL>'
ayarlarını kullandık.
Referanslar