2012-04-06 12 views
9

Ktoś wie o przydatnej funkcji wyszukiwania w nazwach kolumn w Vertica? Z dokumentacji wydaje się, że \ d odpowiada tylko kwerendom table_names. Szukam czegoś podobnego do MySQL's information_schema.columns, ale nie mogę znaleźć żadnych informacji o podobnej tabeli meta-danych.Jak wyszukiwać nazwy kolumn w Vertica?

Dzięki!

Odpowiedz

11

w pkt 5.1, jeśli masz wystarczających uprawnień można zrobić

SELECT * FROM v_catalog.columns; 

dostęp do informacji kolumn męska, dla niektórych rzeczy trzeba dołączyć do

v_catalog.tables 
+0

szukaj w v_catalog.view_columns, jeśli szukasz odpowiedzi w widokach zamiast w tabelach – srj

1

Odpowiedź może być różna w zależności od wersji Vertica, z której korzystasz.

W najnowszej wersji 5.1 znajduje się tabela systemowa COLUMNS. Tylko patrząc na dokumentacji online tutaj wydaje się być najbardziej użyteczne kolumny z ich typów:

TABLE_SCHEMA VARCHAR TABLE_NAME VARCHAR DATA_TYPE VARCHAR

To powinno dać to, czego potrzebują. Jeśli twoja wersja nie ma tabeli systemowej, daj mi znać, z której wersji korzystasz, a zobaczę, co możemy zrobić.

0

Wrap ten skrypt Pythona w powłoce funkcja i zobaczysz wszystkie tabele zawierające dowolne dwie kolumny: import argparse

parser = argparse.ArgumentParser(description='Find Vertica attributes in tables') 
parser.add_argument('names', metavar='N', type=str, nargs='+', help='attribute names') 
args = parser.parse_args() 


def vert_attributes(*names): 
    first_name = names[0].lower() 
    first = "select root.table_name, root.column_name from v_catalog.columns root " 
    last = " where root.column_name like '%s' " % first_name 
    names = names[1:] 
    if len(names) >= 1: 
     return first + " ".join([" inner join (select table_name from v_catalog.columns where column_name like '%s') q%s on root.table_name = q%s.table_name " % (name.lower(), index, index) for index,name in enumerate(names)]) + last 
    else: 
     return first + last 

print nz_attributes(*tuple(args.names))