2015-05-26 17 views
5

Tôi có một truy vấn được viết trong một tệp có tại/path/to/query. Làm cách nào để lưu kết quả đầu ra vào tệp csv mà không sử dụng COPY trong truy vấn? Tôi đã thử lệnh sau, nhưng các trường của tệp đầu ra được phân tách bằng dấu "|".Lưu đầu ra psql vào tệp csv

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' 

Trả lời

3

Nó không được giải thích trong tài liệu hướng dẫn, nhưng tùy chọn -F đòi hỏi sự -A tùy chọn (đầu ra bảng unaligned) để làm việc:

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' -A 

Nếu bạn không muốn các tiêu đề trong csv của bạn, điều này có nghĩa là, không có hàng bổ sung ở trên cùng và ở dưới cùng, hãy sử dụng tùy chọn -t.

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' -A -t 

Từ sự giúp đỡ:

-A, --no-sắp xếp chế độ bảng unaligned đầu ra
-F, --field-separator = STRING bộ tách lĩnh vực (mặc định: "| ")
-t, - chỉ in các hàng chỉ có

+0

Nó hoạt động. Đây là một chút pick-nit, nhưng làm thế nào để loại bỏ 2 dòng phụ: "SELECT " ở trên cùng và "(rows )" ở phía dưới? –

+0

Nếu bạn chỉ muốn tuples, không có các hàng khác ở phía dưới và ở trên cùng, hãy sử dụng tùy chọn -t: 'psql -U username -d dbname -f/path/tới/query -o/path/to/output/file - F ',' -A -t'. –

+0

Tôi đã thử điều đó. Tôi vẫn thấy "SELECT , mặc dù số lượng hàng ở dưới cùng biến mất. –

Các vấn đề liên quan