任何人都知道在Vertica中搜索column_names有一个方便的功能吗?从文档中,似乎\ d只查询table_names。我正在寻找像MySQL的information_schema.columns这样的东西,但找不到有关类似的元数据表的任何信息。
谢谢!
答案 0 :(得分:14)
在5.1中,如果您有足够的权限,则可以
SELECT * FROM v_catalog.columns;
访问列的信息,对于您需要加入的某些内容
v_catalog.tables
答案 1 :(得分:1)
答案可能因您使用的Vertica版本而异。
在最新版本5.1中,有一个COLUMNS系统表。只需查看在线文档,这里似乎是最有用的列类型:
TABLE_SCHEMA VARCHAR TABLE_NAME VARCHAR DATA_TYPE VARCHAR
那应该给你你需要的东西。如果您的版本没有系统表,请告诉我您正在运行的版本,我会看到我们可以做什么。
答案 2 :(得分: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))