życie zabija powoli :)

 

04

stycznia

2010

prosty problem z sql, a jakie schody

Nie tak dawno miałem prosty problem : wypisanie kolumn z wybranych tabel wraz z typami i ew. dodatkowymi informacjami (czy da sie nullowac) :
Wiem ze na oracle mozna sobie w pl/sql developer puscic describe na tabelce, a w psql wpisac \d tabelka i szybko dostac wynik. Mi chodzi o rozwiazanie reczne ktore mozna
- wykonac na ~150 tabelach w krotkim czasie
- sformatowac recznie (kolejnosc kolumn itp)
- wykorzystac jako podzapytanie

postgresql:

SELECT 
        n.nspname||'.'|| c.relname as tabela, 
        a.attname as kolumna,
        pg_catalog.format_type(a.atttypid, a.atttypmod) as typ,
        a.attnotnull as null
    FROM 
        pg_catalog.pg_attribute a,
        pg_catalog.pg_class c
    LEFT JOIN 
        pg_catalog.pg_namespace n
    ON 
        n.oid = c.relnamespace
    WHERE
        c.relname = lower('TABELKA') AND 
        pg_catalog.pg_table_is_visible(c.oid) and 
        a.attrelid = c.oid AND 
        a.attnum > 0 AND 
        NOT a.attisdropped
    ORDER BY a.attnum 

oracle :

SELECT t.tablename,t.columnname,c.comments,
case
when t.datatype like '%CHAR%' then
t.data
type || '(' || t.datalength || ')'
when
t.data
type like '%DATE%' then
t.datatype
else
t.data
type || '(' || t.dataprecision || '.' || t.datascale || ')'
end as typ
from usertabcols t, usercolcomments c
where t.tablename=c.tablename
and t.columnname=c.columnname
and t.table_name ='tabela'

Wersja postgresql pokazuje poza nazwą, schematem i typem czy kolumna moze byc null, za to wersja oracle pokazuje komentarze do kolumn. Schemat inny niz public w wersji postgresql (jeszcze) nie działa :)

Pisanie pierwszego skryptu zajęło ponad godzinę. Drugiego - ~20 minut.

Postgresql jest szalenie skomplikowany w tym nieszczególnie wymyślnym przypadku, bo trzeba przebic sie przez mnostwo niskopoziomowych (i niezbyt obszernie opisanych) procedur, aby osiagnac cel. I tak dobrze, ze chociaz takie pgcatalog.formattype istnieje, inaczej już dawno bym się poddał . I tak podejrzewam że znajdzie się ktoś kto zrobi to w 3 linijkach, prościej i bardziej elegancko :]

btw. pierwszy wpis w nowym roku ;)

 
 

Komentarze

 
 
 

№ 1

06 stycznia 2010, 20:28:33

anetka

o pierwszy wpis i jak mądrze napisane :)

 
 
 

№ 2

06 stycznia 2010, 20:29:40

yOSHi314

powiedzmy ze to takie postanowienie noworoczne :]

 
 
 

Dodaj komentarz

 

Podpis

 

URL

 

Treść

 
 
 
 

Miniblog

14 września 2011, 22:19:53 | klucz ssh na gitorious |

Od niedawna przyłapałem się na tym że na gitorious.org przestał działać mój klucz ssh. Próba ponownej instalacji klucza powodowała jego odrzucanie ( " ssh key invalid " ).

Problem polega na tym ze zamiast user@host na końcu klucza trzeba wpisać swój email jaki podaliśmy przy rejestracji w gitorious.org. Być może problem nie dotyczy wszystkich, ale u mnie było to jedyne działające rozwiązanie.

04 lipca 2011, 12:48:34 | Tunelowanie esx po ssh |

Szybka notatka na przyszłość; aby wbić się na serwer ESX za pomocą vSphere poprzez tunel SSH, trzeba przeforwardować porty 443, 902, 903 oraz dodać wpis do hosts postaci

127.0.0.1 esxhost

bez tego nie pójdzie. Posiadanie wpisu określającego 127.0.0.1 jako "localhost" też z jakiegoś powodu nie wystarcza i dostaje się tajemnicze informacje o nieprawidłowym hoście, braku łączności itp.

02 sierpnia 2010, 20:12:02 | [mini] nietypowy problem CUPS |

ERRDOS - ERRbadaccess 
(Invalid open mode.) opening 
remote spool Test Page

W takiej sytuacji należy w windows w wlaściwościach drukarki odznaczyć "drukuj bezpośrednio na drukarkę". Dziwne, ale zostawię to sobie tutaj na przyszłość.