Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

psql expanded display - avoid dashes

When I have a very wide column (like a json document) and I am using expanded display to make the contents at least partly readable, I am still seeing extremely ugly record separators, that seems to want to be as wide as the widest column, like so:

Is there a way to avoid the "Sea of Dashes"?

-[ RECORD 1 ]--+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

id | 18

description | {json data xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}

parameter | {json data xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}

name | Foo

-[ RECORD 2 ]--+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

id | 19

description | {}

parameter | {json data xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}

name | CustomerRequestEventType

like image 906
Ákos Vandra-Meyer Avatar asked Mar 17 '17 09:03

Ákos Vandra-Meyer


People also ask

What does \d do in PostgreSQL?

The command \d in psql lists all tables, views, and sequences.

How can we turn on expanded mode in PostgreSQL?

within the psql shell: Also to note: the psql command line option -P expanded=auto or --pset expanded=auto is the same as using \x auto from within.

What is P in PostgreSQL?

# -U is the username (it will appear in the \l command) # -h is the name of the machine where the server is running. # - p is the port where the database listens to connections. Default is 5432. # - d is the name of the database to connect to. I think DO generated this for me, or maybe PostgreSQL. $

Which command can be used in psql to show all the available operators?

The psql commands \df and \do can be used to list all available functions and operators, respectively.


1 Answers

to avoid sea of dashes, use \pset format unaligned, eg:

t=# \x
Expanded display is on.
t=# \pset format unaligned
Output format is unaligned.
t=# with ts as (select generate_series('2010-01-01'::timestamp,'2010-01-10'::timestamp,'1 day'::interval) s) select array_agg(s) from ts;                 array_agg|{"2010-01-01 00:00:00","2010-01-02 00:00:00","2010-01-03 00:00:00","2010-01-04 00:00:00","2010-01-05 00:00:00","2010-01-06 00:00:00","2010-01-07 00:00:00","2010-01-08 00:00:00","2010-01-09 00:00:00","2010-01-10 00:00:00"}
Time: 0.250 ms

As you can see, no dashes, but the long string is still wrapped over lines by the length of the window (or not wrapped at all). In case of unformatted string this is the solution, but you mentioned json - it can be devided in a pretty way. To do so instead of using unaligned format in psql, consume jsonb_pretty function or pretty flag of other functions, eg (with array_to_json(..., true):

t=# with ts as (select generate_series('2010-01-01'::timestamp,'2010-01-31'::timestamp,'1 day'::interval) s) select array_to_json(array_agg(s),true) from ts;
array_to_json|["2010-01-01T00:00:00",
 "2010-01-02T00:00:00",
 "2010-01-03T00:00:00",
 "2010-01-04T00:00:00",
 "2010-01-05T00:00:00",
 "2010-01-06T00:00:00",
 "2010-01-07T00:00:00",
 "2010-01-08T00:00:00",
 "2010-01-09T00:00:00",
 "2010-01-10T00:00:00",
 "2010-01-11T00:00:00",
 "2010-01-12T00:00:00",
 "2010-01-13T00:00:00",
 "2010-01-14T00:00:00",
 "2010-01-15T00:00:00",
 "2010-01-16T00:00:00",
 "2010-01-17T00:00:00",
 "2010-01-18T00:00:00",
 "2010-01-19T00:00:00",
 "2010-01-20T00:00:00",
 "2010-01-21T00:00:00",
 "2010-01-22T00:00:00",
 "2010-01-23T00:00:00",
 "2010-01-24T00:00:00",
 "2010-01-25T00:00:00",
 "2010-01-26T00:00:00",
 "2010-01-27T00:00:00",
 "2010-01-28T00:00:00",
 "2010-01-29T00:00:00",
 "2010-01-30T00:00:00",
 "2010-01-31T00:00:00"]
Time: 0.291 ms

Note I still use unaligned format to avoid "+" though...

like image 188
Vao Tsun Avatar answered Sep 21 '22 14:09

Vao Tsun