2012-03-29 26 views
36

Psql'den çıktıdaki sütun adlarını ve satır sayısını nasıl gizlersiniz?Psql çıkışında sonuç kümesi dekorasyonu nasıl gizlenir

Birlikte psql'in üzerinden bir SQL sorgusu çalıştırıyorum:

psql --user=myuser -d mydb --output=result.txt -c "SELECT * FROM mytable;" 

ve ben gibi çıktı bekliyorum:

1,abc 
2,def 
3,xyz 

ama bunun yerine alıyorum: Of

id,text 
------- 
1,abc 
2,def 
3,xyz 
(3 rows) 

Tabii ki, sonra iki satır ve alt sıra dışarı süzmek imkansız değil, ama sadece psql ile bunu yapmak için bir yolu var mı? Onun manpage üzerinde okuma, alan sınırlayıcıyı kontrol etmek için seçenekler görüyorum, ama yabancı çıkışı saklamak için hiçbir şey yok.

Düzenlendi

psql --user=myuser -d mydb --output=result.txt -t -c "SELECT * FROM mytable;"

(aşkın bir yıl sonra) eklemek için:

Ayrıca the COPY command kontrol etmek isteyebilirsiniz

cevap

42

Sen -t veya --tuples-only seçeneğini kullanabilirsiniz . Artık en çok test kullanışlı herhangi PostgreSQL örneklerini var, ama bu satırlar boyunca bir şey yazabilirsiniz düşünüyorum:

psql --user=myuser -d mydb -c "COPY mytable TO 'result.txt' DELIMITER ','"

(yani result.txt dışında mutlak bir yol olması gerekir). COPY komutu ayrıca daha zeki bir CSV biçimini destekler; its documentation.

+16

, "altbilgi = kapalı" –

+1

'COPY' gerçekten olabilen bir geçerli bir alternatif, ancak dosya sunucuda bitecek ve psql'nin çalıştığı makinede değil ... – fvu

+0

@fvu: İyi nokta. Sunucuda genellikle "psql" * çalıştırdım, bu yüzden benim için bir sorun değildi. . . – ruakh

15

Ayrıca çıkışı psql'den yeniden yönlendirebilir ve aynı seçeneği kullanabilirsiniz. Çıkış dosyasını ayarlamak için \ 'yi kullanın ve sadece tupl çıkışını (ya da sadece satır sayısı "altbilgisini" kapatmak için \pset) kullanın. Eğer --pset = ile psql'i çalıştırmak başlığını ancak satır sayısı altbilgi, isterseniz Alternatif

\o /home/flynn/queryout.txt 
\t on 
SELECT * FROM a_table; 
\t off 
\o 

alternatif

\o /home/flynn/queryout.txt 
\pset footer off 
. . .