2012-04-06 5 views
9

¿Alguien sabe de una función útil para buscar a través de column_names en Vertica? De la documentación, parece que \ d solo consulta table_names. Estoy buscando algo como information_schema.columns de MySQL, pero no puedo encontrar ninguna información sobre una tabla similar de metadatos.¿Cómo buscar column_names en Vertica?

Gracias!

Respuesta

11

En 5,1 si tiene suficientes permisos que puede hacer

SELECT * FROM v_catalog.columns; 

acceder a la información de las columnas, para algunas cosas que necesita para unirse a

v_catalog.tables 
+0

búsqueda en v_catalog.view_columns si está buscando sus respuestas en vistas en lugar de tablas – srj

1

La respuesta puede variar según la versión de Vertica que esté utilizando.

En la última versión, 5.1, hay una tabla del sistema COLUMNS. Con sólo mirar la documentación en línea aquí parece ser más útiles las columnas con sus tipos:

TABLE_SCHEMA VARCHAR VARCHAR TABLE_NAME DATA_TYPE VARCHAR

que debe darle lo que necesita. Si su versión no tiene la tabla del sistema, dígame qué versión está ejecutando y veré qué podemos hacer.

0

Wrap este script Python en una cáscara función y podrá ver todas las tablas que contienen dos columnas: importación 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))