2012-03-29 16 views
36

Làm cách nào để ẩn các tên cột và số hàng trong đầu ra từ psql?Cách ẩn trang trí bộ kết quả trong đầu ra Psql

Tôi đang chạy một truy vấn SQL qua psql với:

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

và tôi hy vọng sản lượng như:

1,abc 
2,def 
3,xyz 

nhưng thay vào đó tôi nhận được:

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

Trong số Tất nhiên, nó không phải là không thể lọc hai hàng đầu và hàng dưới cùng ra sau khi thực tế, nhưng nó có một cách để làm điều đó với chỉ psql? Đọc qua manpage của nó, tôi thấy các tùy chọn để kiểm soát dấu phân cách trường, nhưng không có gì để ẩn đầu ra không liên quan.

Trả lời

42

Bạn có thể sử dụng -t hoặc --tuples-only tùy chọn:

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

Sửa (hơn một năm sau đó) thêm:

Bạn cũng có thể muốn kiểm tra the COPY command . Tôi không còn có bất kỳ trường hợp PostgreSQL tiện dụng để thử nghiệm với, nhưng tôi nghĩ bạn có thể viết một cái gì đó dọc theo những dòng:

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

(trừ result.txt rằng sẽ cần phải là một đường dẫn tuyệt đối). Lệnh COPY cũng hỗ trợ định dạng CSV thông minh hơn; xem its documentation.

+16

cách khác, nếu bạn muốn tiêu đề nhưng không phải là hàng-count chân trang, chạy psql với --pset = "footer = off" –

+1

'COPY' có thể thực sự trở thành một thay thế hợp lệ, nhưng tệp sẽ kết thúc trên máy chủ chứ không phải trên máy nơi mà psql đang chạy ... – fvu

+0

@fvu: Điểm tốt. Tôi thường chạy 'psql' * trên * máy chủ, vì vậy đối với tôi đó không phải là một vấn đề. . . – ruakh

15

Bạn cũng có thể chuyển hướng đầu ra từ trong psql và sử dụng tùy chọn tương tự. Sử dụng \ o để đặt tập tin đầu ra, và \ t chỉ xuất các bộ dữ liệu đầu ra (hoặc \pset để tắt chỉ số chân trang "chân trang").

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

Ngoài ra,

\o /home/flynn/queryout.txt 
\pset footer off 
. . . 
Các vấn đề liên quan