25 Şubat 2014 Salı

PostgreSQL sorgusunu CSV formatında dosyaya yazma

PostgreSQL'de bir sorgunun çıktısını CSV olarak dosyaya yazmak için COPY komutu kullanılır.

db=# COPY (SELECT remoteip,retval FROM mailrecs WHERE retval >0 ) TO '/tmp/log.txt' With CSV;
COPY 427571

Çıktı , ile ayrılmış olarak aşağıdaki formatta dosyaya yazılacaktır.

# more /tmp/log.txt
192.168.1.10,2
10.0.0.100,4
..

 ',' ayracı yerine başka bir ayraç kullanmak isterseniz DELIMITER parametresi kullanılır.


db=# COPY (SELECT remoteip,retval FROM mailrecs WHERE retval >0 ) TO '/tmp/log.txt' With DELIMITER ';' CSV;  
Tüm tabloyu kopyalamak için ise aşağıdaki sorgu kullanılır.

db=# COPY mailrecs TO '/tmp/tablodump';

Aşağıdaki adresten diğer örnekleri de görebilirsiniz.


http://www.gistutor.com/postgresqlpostgis/10-intermediate-postgresqlpostgis-tutorials/39-how-to-import-or-export-a-csv-file-using-postgresql-copy-to-and-copy-from-queries.html

3 Şubat 2014 Pazartesi

UNIX domain sokete komut satırından bağlanma

Test amaçlı olarak bir unix domain sokete başarılı bağlantı kurulup kurulmadığını öğrenmek isteyebilirsiniz. Bunun için FreeBSD işletim sisteminde telnet komutunu kullanabilirsiniz. telnet komutuna parametre olarak soket yolunu vermeniz yeterlidir.


freebsd# $ telnet /var/run/clamav/clamd
Trying /var/run/clamav/clamd...
Connected to /var/run/clamav/clamd.
Escape character is '^]'.
SCAN /tmp/dosya
/tmp/dosya: OK
Connection closed by foreign host.


Linux işletim sistemi kullanıyorsanız telnet komutu ile bu işi yapamazsınız. Bunun yerine socat komutunu kullanmalısınız. socat paketi RPM dağıtımlarında EPEL deposunda bulunmaktadır. EPEL deposunu kurduktan sonra aşağıdaki komutla kurabilirsiniz.

linux# yum -y install socat

Debian tabanlı sistemlerde aşağıdaki komutla kurabilirsiniz.

linux#apt-get install socat


Aşağıdaki komutla test edilebilir.

 linux# socat - UNIX-CONNECT:/var/run/clamav/clamd
SCAN /tmp/dosya
/tmp/dosya: OK


Ayrıca nc komutu ile de sokete bağlanabilirsiniz.(Teşekkürler Volkan Yazıcı)

linux# nc -U /var/run/clamav/clamd
SCAN /tmp/dosya
/tmp/dosya: OK