Hologres では、異なるスキーマをまたいでテーブルを作成できます。 このトピックでは、Hologres でスキーマを作成し、スキーマをまたいでテーブルを作成する方法について説明します。
背景情報
Hologres は PostgreSQL と互換性があり、そのスキーマ機能は PostgreSQL のものと同じです。
Hologres のスキーマは、テーブルのストレージ構造を database.table から database.schema.table に変更します。
現在のバージョンの Hologres は、スキーマの作成、スキーマの名前変更、およびスキーマ内でのテーブル作成をサポートしています。
Hologres では、各テーブルはスキーマに属します。 データベースには複数のスキーマを含めることができ、データの管理に役立ちます。 これは、同じデータベースを使用する際のユーザー間の干渉を防ぐのにも役立ちます。
異なるスキーマに、同じ名前のテーブルやデータ型を含めることができます。
データベースが作成されると、デフォルトで public スキーマが作成されます。 他のスキーマを作成しない場合、データベース内に作成されたすべてのテーブルは public スキーマに格納されます。 次の文を実行して、現在のスキーマを表示できます。
SELECT CURRENT_SCHEMA();--現在のスキーマを表示します。
\d tablename; --対象テーブルが属するスキーマを表示します。 この文はターミナルにのみ適用されます。
次の図は、Hologres インスタンス内のオブジェクトの階層を示しています。
手順
-
スキーマを作成します。
次の例は、データベースにスキーマを作成するために使用される SQL 文を示しています。
CREATE SCHEMA schemaname;--スキーマを作成します。 SET search_path TO schemaname;--対象のスキーマに切り替えます。 CREATE TABLE blink_demo (id text); --対象のスキーマにテーブルを作成します。 SELECT CURRENT_SCHEMA();--現在のスキーマを表示します。 -
スキーマを跨いでテーブルを作成します。
異なるスキーマにテーブルを作成するには、テーブル名を
schema.tableフォーマットで指定します。 例:-
対象のデータベースの public スキーマにテーブルを作成します。 以下に SQL 文の例を示します。
CREATE TABLE public.mytest ( name text, id INT); -
以下は、public スキーマから対象のスキーマにテーブルを作成する SQL 文の例です。
SET search_path TO public; CREATE TABLE my_schema.mytest ( name text, id INT, age INT );
-
その他の操作
次の SQL 文を実行して、指定したスキーマ内のすべてのテーブルの合計ストレージサイズを表示できます。
SELECT table_schema, pg_size_pretty(SUM(pg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name))::decimal)) AS schema_size
FROM information_schema.tables
WHERE table_schema = '<schema_name>'--<schema_name> をご利用のスキーマ名に置き換えます。
GROUP BY table_schema;