Verticaでcolumn_namesを検索するための便利な関数を知っている人はいますか?ドキュメントから、\dはtable_namesのみをクエリしているようです。MySQLのinformation_schema.columnsのようなものを探していますが、メタデータの同様のテーブルに関する情報が見つかりません。
ありがとう!
5.1では、十分な権限があれば実行できます
SELECT * FROM v_catalog.columns;
列の情報にアクセスするには、参加する必要があるものがあります
v_catalog.tables
回答は、使用している Vertica のバージョンによって異なる場合があります。
最新バージョンの 5.1 には、COLUMNS システム テーブルがあります。ここのオンラインドキュメントを見るだけで、そのタイプを持つ最も有用な列のようです:
TABLE_SCHEMA VARCHAR
TABLE_NAME VARCHAR
DATA_TYPE VARCHAR
それはあなたに必要なものを与えるはずです。お使いのバージョンにシステム テーブルがない場合は、実行しているバージョンをお知らせください。できることを確認します。
このPythonスクリプトをシェル関数でラップすると、任意の2つの列を含むすべてのテーブルを表示できます。importargparse
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))