pgrow czyli jak inaczej wyswietlić wiersz w psql
psql każdy używający postgresa znać powinien, wygodna konsola do bazy postgresql mająca masę możliwości. Niestety nie znalazłem rozwiązania jak poradzić sobie z sytuacją w której na wąskim terminalu wyświetlić trzeba wiersz tabeli mającej kilkanaście kolumn.
Próbowaliście? wygląda to m/w tak:
select * from klienci where id like '586_'; id | typ | kod | s_kat | imie | nazw | nazwa_f | adr_ul | adr_nr | adr_miasto | adr_kodp | telefon | tel_kom | nip | email | uwagi ------+-----+------+-------+------------+--------------+------------------------------- ------------------------+------------------+--------+------------+----------+---------- ----+---------------+---------------+-------------------------+------------------------ ------------------------------------------------------------------- 5863 | i | 7340 | now | xxxxx | xxxxxxxxxxxx | | | | | | | xxxxxxxxx | | | 5865 | i | 7343 | now | xxxxxxx | xxxxx | xxxxxxxxxx xxxxxxxxxxx xxxxxxx xxxxxxxxxxx x xxxxxxxx | ul. xxxx xxxxxxx | 6 | Kraków | 31-547 | xxxxxxx | xxx xx xx fax | xxx-xx-xx-xxx | xxxxxxxxxxxxxxxxxxxxxxx | xxxxxxxxxxxxxxxxxxxxxxx lub ogólny sekretariat....;Prawda, że piękne? Tylko szukaj tu człowieku danych...
Dlatego też, zainspirowany postem Huberta Lubaczewskiego, napisałem sobie skrypt którym pragnę się podzielić, powoduje on, że wynik tego samego zapytania wygląda tak:
-------------------- id: 5863 typ: i kod: 7340 s_kat: now imie: xxxxx nazw: xxxxxxxxxxxx nazwa_f: adr_ul: adr_nr: adr_miasto: adr_kodp: telefon: tel_kom: xxxxxxxxx nip: email: uwagi: -------------------- id: 5865 typ: i kod: 7343 s_kat: now imie: xxxxxxx nazw: xxxxx nazwa_f: xxxxxxxxxx xxxxxxxxxxx xxxxxxx xxxxxxxxxxx x xxxxxxxx adr_ul: ul. xxxx xxxxxxx adr_nr: 6 adr_miasto: Kraków adr_kodp: 31-547 telefon: xxxxxxx tel_kom: xxx xx xx fax nip: xxx-xx-xx-xxx email: xxxxxxxxxxxxxxxxxxxxxxx uwagi: xxxxxxxxxxxxxxxxxxxxxxx lub ogólny sekretariat....; --------------------Według mnie lepiej, a Wy jak myślicie?
Oto skrypt:
#!/usr/bin/perl my $head = 0; my $continue = 0; while (<STDIN>) { if (/^\(\d+ row/) { print "-"x20 . "\n" . $_; $head = 0; $continue = 0; @data = undef; @data2 = undef; next; } s/[\n\r]+$//; if (!$head) { @order = split /\|/; $head = 1; foreach $t (@order) { $head = length($t) if length($t) > $head; } $head++; next; } if ($continue) { @data2 = split /\|/; $data[$#data] .= '\n' . (shift @data2); push @data, @data2; } else { @data = split /\|/, $_, -1; } if ($#data < $#order) { $continue = 1; next; } else { $continue = 0; } printf("%s\n", "-"x20); for $i (0..$#order) { printf("%${head}s: %s\n", $order[$i], $data[$i]); } }Tak go należy użyć w psql:
-- włączenie unaligned output (\a) oraz przekierowania output (\o): \a \o |./pgrow.pl -- select select * from; -- wyłączenie unaligned oraz przekierowania output: \a \oMiłego używania...
Archives
- February 2016
- October 2015
- September 2015
- July 2013
- June 2013
- April 2013
- March 2013
- December 2011
- November 2011
- July 2011
- June 2011
- February 2010
- September 2009
- March 2009
- February 2009