Redshiftでスキーマやテーブル一覧を取得したい

2023.01.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部の荒木です。

Pythonのredshift-connectorを使ってRedshiftのテーブル一覧等を取得したいなと思ったので、 Redshiftのユーザ定義のスキーマやテーブルの一覧を取得したいときの方法についてまとめたいと思います。

本題

システムテーブルとビューについて

自分で作成したスキーマやテーブルの情報を取得したい場合、システム操作に関連するデータベースにクエリを実行することで情報を取得することができます。

Amazon Redshift には、システムの動作に関する情報を含む多くのシステムテーブルとビューがあります。これらのシステムテーブルとビューには、その他のデータベーステーブルと同じ方法でクエリを実行できます。
システムテーブルとビューについて

ユーザ定義のテーブルのみ取得したいとき

一番よく使うんじゃないかなと思うのは、すべてのユーザ定義のテーブル情報が表示されるSVV_TABLE_INFOです。 クライアントツールで以下クエリを実行することでデータベース、スキーマ、テーブルの情報を取得することが可能です。
それ以外の情報を取得したい場合はこちらを参照

SELECT 
 database, 
 schema, 
 table 
FROM SVV_TABLE_INFO

カラム名も取得したいとき

テーブルのカラム名も取得したい場合はSVV_COLUMNSから取得することができます。 データベース、スキーマ、テーブルに加えてカラム名、precision、scaleの情報も取得することができます。
それ以外の情報を取得したい場合はこちらを参照

SELECT 
 database_name, 
 schema_name, 
 table_name, 
 column_name, 
 data_type, 
 data_type, 
 numeric_scale 
FROM SVV_COLUMNS

似たようなものでSVV_ALL_COLUMNSがありますが、ユーザ定義以外のすべてのテーブルのカラム等も含まれるため、ユーザ定義のものだけ取得したい場合にはSVV_COLUMNSを使用する必要があります。

まとめ

全然難しいことはないですが、Redshiftのテーブル一覧取得したりすることとかあまりなかったので学びになりました。pythonやSQL初学者の方は知っておくと役に立つかなと思います。

参考

AWS データベース開発ガイド システムビュー