Как искать имена столбцов в Vertica?

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

спасибо!

3 ответов


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

SELECT * FROM v_catalog.columns;

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

v_catalog.tables

ответ может отличаться в зависимости от используемой версии Vertica.

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

TABLE_SCHEMA VARCHAR ИМЯ_ТАБЛИЦЫ ТИП VARCHAR ЭТО ТИП VARCHAR

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


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