注意:Prestoの方でクエリを書いていることを前提とします。
トレジャーデータを使っていて、各DBのそれぞれのテーブル毎の列名の一覧を取得したくなったのでその方法のメモです。
対象のテーブルが少なければ、
DESCRIBE table_name
を順番に実行すれば十分ですが、対象テーブルが多くなるとこれでは大変です。
この場合、Presotのメタデータにアクセスすると手軽に列名の一覧を得ることができます。
FAQの次の質問が参考になります。
23. How do I access TD table metadata using Presto?
クエリをそのまま引用します。
# List TD Databases
SELECT * from information_schema.schemata
# List TD Tables
SELECT * from information_schema.tables
# List all column metadata
SELECT * from information_schema.columns
このうち、3番目の
SELECT * from information_schema.columns
を使うと、DB、テーブル、列を含む情報を取得できます。
不要な情報もあるので、自分は次の形で使うことが多いです。
SELECT
table_schema,
table_name,
column_name
FROM
information_schema.columns
通常のSELECTと同じように、WHERE句で特定のDB(schema)のみなどの条件をつけることもできます。