如何在Vertica中搜索列名?

10

有没有一个方便的函数可以在Vertica中搜索列名?从文档中看来,\d只查询表名。我正在寻找类似于MySQL的information_schema.columns的东西,但是找不到任何关于类似元数据表的信息。

谢谢!

3个回答

15
在5.1版本中,如果您拥有足够的权限,您可以执行以下操作:
SELECT * FROM v_catalog.columns;

要访问列的信息,对于某些内容,您需要使用连接操作。

v_catalog.tables

如果您在视图而不是表中寻找答案,请在v_catalog.view_columns中进行搜索。 - srj

1

答案可能因您使用的 Vertica 版本而有所不同。

在最新的版本 5.1 中,有一个名为 COLUMNS 的系统表。从在线文档中查看,这里似乎是最有用的列及其类型:

TABLE_SCHEMA VARCHAR
TABLE_NAME VARCHAR
DATA_TYPE VARCHAR

这应该会给你所需的内容。如果你的版本没有系统表,请告诉我你正在运行的版本,我会看看我们能做些什么。


0

将此 Python 脚本包装在一个 shell 函数中,您将能够查看包含任何两列的所有表: import argparse

把这个 Python 脚本放在一个 shell 函数里,你就可以看到包含任意两列的所有表格: 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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接