10

有人知道在 Vertica 中搜索 column_names 的便捷功能吗?从文档看来,\d 似乎只查询 table_names。我正在寻找类似 MySQL 的 information_schema.columns 的东西,但找不到关于类似元数据表的任何信息。

谢谢!

4

3 回答 3

15

在 5.1 中,如果您有足够的权限,您可以这样做

SELECT * FROM v_catalog.columns;

访问列的信息,对于一些你需要加入的事情

v_catalog.tables
于 2012-04-11T23:43:38.920 回答
1

答案可能因您使用的 Vertica 版本而异。

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

TABLE_SCHEMA VARCHAR
TABLE_NAME VARCHAR
DATA_TYPE VARCHAR

那应该给你你需要的东西。如果您的版本没有系统表,请告诉我您正在运行的版本,我会看看我们能做什么。

于 2012-04-07T02:53:53.547 回答
0

将此 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))
于 2012-10-02T00:44:44.423 回答