Định dạng đầu ra thay thế cho psql


315

Tôi đang sử dụng PostgreSQL 8.4 trên Ubuntu. Tôi có một bảng với các cột c1thông qua cN. Các cột đủ rộng để chọn tất cả các cột làm cho một hàng kết quả truy vấn được bọc nhiều lần. Do đó, đầu ra khó đọc.

Khi kết quả truy vấn chỉ tạo thành một vài hàng, sẽ thuận tiện nếu tôi có thể xem kết quả truy vấn sao cho mỗi cột của mỗi hàng nằm trên một dòng riêng biệt, ví dụ:

 c1: <value of row 1's c1>
 c2: <value of row 1's c1>
 ...
 cN: <value of row 1's cN>
 ---- some kind of delimiter ----
 c1: <value of row 2's c1>
 etc.

Tôi đang chạy các truy vấn này trên một máy chủ mà tôi không muốn cài đặt bất kỳ phần mềm bổ sung nào. Có một thiết lập psql nào sẽ cho phép tôi làm điều gì đó như vậy không?

Câu trả lời:


531

Tôi chỉ cần dành nhiều thời gian hơn để nhìn vào tài liệu. Lệnh này:

\x on

sẽ làm chính xác những gì tôi muốn. Đây là một số đầu ra mẫu:

select * from dda where u_id=24 and dda_is_deleted='f';
-[ RECORD 1 ]------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
dda_id             | 1121
u_id               | 24
ab_id              | 10304
dda_type           | CHECKING
dda_status         | PENDING_VERIFICATION
dda_is_deleted     | f
dda_verify_op_id   | 44938
version            | 2
created            | 2012-03-06 21:37:50.585845
modified           | 2012-03-06 21:37:50.593425
c_id               | 
dda_nickname       | 
dda_account_name   | 
cu_id              | 1
abd_id             | 

8
Bạn cũng có thể thử \ \ pset format (các định dạng được phép là không được sắp xếp, căn chỉnh, được bao bọc, html, latex, troff-ms). Nếu màn hình đủ hẹp, từ đó sẽ bao bọc từng cột.
Bryce

12
\xmột mình sẽ thay đổi giá trị, tiết kiệm cho bạn ba tổ hợp phím! (Hữu ích khi bạn nhanh chóng chuyển đổi giữa đầu ra rộng và hẹp).
msanford

7
Nếu bạn đang tìm kiếm tương đương với \Gtừ Mysql, hãy thử nối \x\g\xvào cuối truy vấn hoặc xác định lối tắt khi ~/.psqlrcthêm \set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0', sau đó sử dụng ở cuối :G. (lưu ý thiếu dấu chấm phẩy)
Sławomir Lenart

5
Có thể bằng cách nào đó vượt qua " \x on" hoặc tương đương tại dòng lệnh? Thật tuyệt nếu tôi chỉ có thể lưu (ví dụ: bằng cách sử dụng bí danh bash shell) psql --somethingđể tôi luôn có tùy chọn được bật theo mặc định.
máy tính

2
@machineghost Sử dụng -P expanded=autohoặc--pset expanded=auto
alecdwm

269

(Mới) Chế độ tự động mở rộng: \ x tự động

Mới cho Postgresql 9.2; PSQL tự động điều chỉnh các bản ghi theo chiều rộng của màn hình. trước đây bạn chỉ có chế độ mở rộng hoặc tắt và phải chuyển đổi giữa các chế độ khi cần thiết.

  • Nếu bản ghi có thể vừa với chiều rộng của màn hình; psql sử dụng định dạng bình thường.
  • Nếu bản ghi không thể vừa với chiều rộng của màn hình; psql sử dụng chế độ mở rộng.

Để có được điều này, hãy sử dụng: \ x auto

Tài liệu Postgresql 9.5 về lệnh PSQL.


Màn hình rộng, định dạng bình thường:

 id | time  |       humanize_time             | value 
----+-------+---------------------------------+-------
  1 | 09:30 |  Early Morning - (9.30 am)      |   570
  2 | 11:30 |  Late Morning - (11.30 am)      |   690
  3 | 13:30 |  Early Afternoon - (1.30pm)     |   810
  4 | 15:30 |  Late Afternoon - (3.30 pm)     |   930
(4 rows)

Màn hình hẹp, định dạng mở rộng:

-[ RECORD 1 ]-+---------------------------
id            | 1
time          | 09:30
humanize_time | Early Morning - (9.30 am)
value         | 570
-[ RECORD 2 ]-+---------------------------
id            | 2
time          | 11:30
humanize_time | Late Morning - (11.30 am)
value         | 690
-[ RECORD 3 ]-+---------------------------
id            | 3
time          | 13:30
humanize_time | Early Afternoon - (1.30pm)
value         | 810
-[ RECORD 4 ]-+---------------------------
id            | 4
time          | 15:30
humanize_time | Late Afternoon - (3.30 pm)
value         | 930

Làm cách nào để bắt đầu psql với \ x auto?

Cấu hình \x autolệnh khi khởi động bằng cách thêm nó .psqlrcvào thư mục nhà của bạn và khởi động lại psql.Xem phần 'Tệp' trong tài liệu psql để biết thêm thông tin .

~ / .psqlrc

\x auto

70

Bạn có quá nhiều sự lựa chọn, làm sao bạn có thể bối rối :-)? Các điều khiển chính là:

# \pset format
# \H
# \x
# \pset pager off

Mỗi có tùy chọn và tương tác với những người khác. Các tùy chọn tự động nhất là:

# \x off;\pset format wrapped
# \x auto

Tùy chọn "\ x auto" mới hơn chỉ chuyển sang hiển thị từng dòng "nếu cần".

-[ RECORD 1 ]---------------
id          | 6
description | This is a gallery of oilve oil brands.
authority   | I love olive oil, and wanted to create a place for
reviews and comments on various types.
-[ RECORD 2 ]---------------
id          | 19
description | XXX Test A 
authority   | Testing

"\ Pset format" cũ hơn tương tự ở chỗ nó cố gắng sắp xếp dữ liệu gọn gàng trên màn hình, nhưng rơi trở lại không được sắp xếp nếu các tiêu đề không phù hợp. Đây là một ví dụ về bọc:

 id |          description           |            authority            
----+--------------------------------+---------------------------------
  6 | This is a gallery of oilve     | I love olive oil, and wanted to
    ; oil brands.                    ;  create a place for reviews and
    ;                                ;  comments on various types.
 19 | Test Test A                    | Testing

\x autovới \pset pager offlà một trong những tốt đẹp.
mitnk

Được \x off; \pset format wrapped\x autodự định sẽ được sử dụng cùng nhau hoặc chúng loại trừ lẫn nhau?
Demitri

20

Một điều thú vị là chúng ta có thể xem các bảng theo chiều ngang, không cần gấp. chúng ta có thể sử dụng PAGERbiến môi trường. psql sử dụng nó. bạn có thể thiết lập

export PAGER='/usr/bin/less -S'

hoặc chỉ less -Skhi nó đã có sẵn trong dòng lệnh, nếu không có vị trí thích hợp. -S để xem các dòng mở ra. bạn có thể vượt qua trong bất kỳ trình xem tùy chỉnh hoặc các tùy chọn khác với nó.

Tôi đã viết nhiều hơn trong màn hình ngang Psql


1
Trả lời là thực sự tốt. Tôi ngạc nhiên khi nó không được đánh dấu cao hơn. Hoàn hảo cho bất cứ ai làm việc trong một thiết bị đầu cuối.
LUser

Điều này cực kỳ hữu ích
Merlin

Điều này rất hữu ích, nhưng làm thế nào để bạn cuộn sang phải?
Niel de Wet

18

pspg là một công cụ đơn giản cung cấp định dạng bảng nâng cao, cuộn ngang, tìm kiếm và nhiều tính năng khác.

git clone https://github.com/okbob/pspg.git
cd pspg
./configure
make
make install

sau đó đảm bảo cập nhật PAGERbiến, ví dụ như trong~/.bashrc

export PAGER="pspg -s 6" 

trong đó -sviết tắt của bảng màu ( 1-14). Nếu bạn đang sử dụng kho pgdg, chỉ cần cài đặt một gói (trên bản phân phối giống như Debian):

sudo apt install pspg

ví dụ pspg


7

Ngoài ra, hãy chắc chắn kiểm tra \ H, bật / tắt đầu ra HTML. Không nhất thiết phải dễ đọc tại bảng điều khiển, nhưng thú vị khi đổ vào một tệp (xem \ o) hoặc dán vào cửa sổ trình chỉnh sửa / trình duyệt để xem, đặc biệt là với nhiều hàng dữ liệu tương đối phức tạp.


1

bạn có thể sử dụng zenity để hiển thị kết quả truy vấn như bảng html.

  • đầu tiên thực hiện tập lệnh bash với mã sau đây:

    mèo> '/tmp/sql.op'; zenity --text-thông tin --html --filename = '/ tmp / sql.op';

    lưu nó như mypager.sh

  • Sau đó xuất PAGER biến môi trường bằng cách đặt đường dẫn đầy đủ của tập lệnh làm giá trị.

    ví dụ: - xuất PAGER = '/ path / mypager.sh'

  • Sau đó đăng nhập vào chương trình psql rồi thực hiện lệnh \ H

  • Và cuối cùng thực hiện bất kỳ truy vấn nào, đầu ra được gắn thẻ sẽ được hiển thị trong zenity ở định dạng bảng html.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.