2012-04-06 4 views
9

Кто-нибудь знает удобную функцию для поиска по столбцам в Vertica? Из документации кажется, что \ d только запрашивает table_names. Я ищу что-то похожее на MySQL_source_columns, но не могу найти никакой информации о подобной таблице метаданных.Как искать столбцы в Vertica?

Спасибо!

ответ

11

В 5.1, если у вас есть достаточное количество разрешений вы можете сделать

SELECT * FROM v_catalog.columns; 

доступом к информации колонкам, за некоторые вещи, которые вы должны будете присоединиться к

v_catalog.tables 
+0

s earch в v_catalog.view_columns, если вы ищете ответы в представлениях вместо таблиц – srj

1

Ответ может отличаться в зависимости от версии Vertica, которую вы используете.

В последней версии 5.1 имеется системная таблица COLUMNS. Просто смотреть на онлайн-документации здесь, как представляется, наиболее полезные столбцы с их типами:

TABLE_SCHEMA VARCHAR TABLE_NAME VARCHAR DATA_TYPE VARCHAR

Это должно дать вам то, что вам нужно. Если в вашей версии нет системной таблицы, дайте мне знать, какую версию вы используете, и я увижу, что мы можем сделать.

0

Wrap этому питон скрипт в оболочке и вы сможете увидеть все таблицы, которые содержат любые два столбца: 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))