Как искать имена столбцов в 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))