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スクリプトをシェル関数でラップすると、任意の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))
于 2012-10-02T00:44:44.423 に答える