2011-09-06 7 views
5

Chcę otrzymać informacje o tabeli bazy danych Informix i kolumny takie informacje jakZnajdź Informix tabel i kolumn dane za pomocą zapytań SQL

  • nazwy tabel
  • nazwa
  • kolumna tabeli
  • typy danych kolumn
  • długość typ danych (np: jeśli kolumna jest varchar)
  • ogranicza kolumn

jestem w stanie znaleźć nazwy tabel i nazwy kolumn przy użyciu tej kwerendy, aby uzyskać nazwy tabel

select tabname from systables 

aby znaleźć nazwę kolumny

SELECT TRIM(c.colname) AS table_dot_column 
FROM "informix".systables AS t, "informix".syscolumns AS c 
WHERE t.tabname = 'agent_status' 
AND t.tabtype = 'T' 
and t.tabid = c.tabid 
AND t.tabid >= 100 ; 

ale nie jestem w stanie znaleźć typy danych i ograniczenia kolumn.

Czy ktoś może mi powiedzieć zapytanie SQL, aby uzyskać wszystkie szczegóły powyższej tabeli?

Odpowiedz

3

Wow! To złożone zapytanie - najlepiej traktowane jako co najmniej dwa, prawdopodobnie trzy zapytania; A może tak właśnie myślałeś.

Możesz też wybrać tabid i owner w pierwszym zapytaniu, i to jest dobra forma korzystania "informix".systables raczej niż tylko systables (mimo, że tylko naprawdę liczy się w bazie danych ANSI TRYB, ale to naprawdę ma znaczenie).

Zapytanie pod numer syscolumns jest w porządku, chociaż klauzula t.tabid >= 100 jest prawdopodobnie nadmiarowa, chyba że zdecydowanie uniemożliwisz użytkownikom poznanie kolumn w tabelach katalogu systemowego. Ponadto pomocne może być poznanie kolumn w widoku, więc tabtype = 'T' może być zbyt ostry.

Dekodowanie typów danych jest kłopotliwe. W przypadku wbudowanych typów nie jest to zbyt trudne; dla typów zdefiniowanych przez użytkownika jest to znacznie trudniejsza praca. coltype i collength (i extended_d) mówią o typie. Możesz znaleźć kod C, aby przetłumaczyć podstawowe typy w moim pakiecie SQLCMD, w sqltypes.ec. Możesz znaleźć prosty kod SQL (który może nie być kompletny) w $INFORMIXDIR/etc/xpg4_is.sql.

Informacje o ograniczeniach są przechowywane w sysconstraints i powiązanych tabelach. Możesz znaleźć kod dla niektórych ograniczeń w już wspomnianym źródle SQLCMD (plik sqlinfo.ec).