すべてのプロダクト
Search
ドキュメントセンター

Hologres:CREATE TABLE

最終更新日:Feb 19, 2025

データはテーブルに格納され、整理されます。テーブルを作成する際にテーブルのインデックスとプロパティを構成することで、データ処理効率とデータ分析機能を向上させることができます。このトピックでは、CREATE TABLE 文の構文と、Hologres でテーブルを作成する際のインデックスの構成方法について説明します。また、HoloWeb コンソールでテーブルを作成する方法についても説明します。

CREATE TABLE 文の構文

  • 構文

    Hologres の CREATE TABLE 文の構文は、PostgreSQL の構文と互換性があります。

    説明
    • すべての Hologres バージョンでは、1 つのトランザクションで複数のデータ定義言語(DDL)文を実行できます。Hologres V2.0 以降では、1 つのトランザクションで複数のデータ操作言語(DML)文を実行できます。

    • Hologres V2.1 以降では、テーブルプロパティの構成を簡素化するために、create table with property 構文をサポートしています。

    CREATE TABLE WITH 構文を優先的に使用することをお勧めします。この構文は、CREATE TABLE IF NOT EXISTS 文が既存のテーブルと同じ名前のテーブルを作成し、テーブルプロパティを構成するために頻繁に実行されるシナリオなど、特定のシナリオで DDL 文のパフォーマンスを大幅に向上させます。

    • Hologres V2.1 以降でサポートされている構文:

      BEGIN;
      CREATE TABLE [ IF NOT EXISTS] [schema_name.] table_name ([
          { 
          column_name column_type [column_constraints, [...]]
          | table_constraints
          [,...]
          }
      ])
      [WITH (
          property = 'value',
          [, ...]
      )]
      ;
      COMMENT ON COLUMN < tablename.column > IS 'value';
      COMMENT ON TABLE < tablename > IS 'value';
      COMMIT;
    • すべての Hologres バージョンでサポートされている構文:

      begin;
      create table [if not exists] [schema_name.]table_name ([
        {
         column_name column_type [column_constraints, [...]]
         | table_constraints
         [, ...]
        }
      ]);
      
      call set_table_property('<table_name>', property, value);
      comment on column <tablename.column> is 'value';
      comment on table <tablename> is 'value';
      commit;
  • パラメーター

    • column_type: 列のデータ型。Hologres でサポートされているデータ型の詳細については、「データ型」をご参照ください。

    • set_table_property または create table with(Hologres V2.1 以降でサポート): テーブルプロパティを構成するために使用されます。詳細については、このトピックの「テーブルのプロパティを構成する」をご参照ください。

インデックスの概要

Hologres は PostgreSQL エコシステムと互換性があります。Hologres でテーブルを作成するために使用される構文は、PostgreSQL の構文と同じです。ただし、Hologres でサポートされているインデックスは、PostgreSQL でサポートされているインデックスとは異なります。Hologres でサポートされているインデックスの詳細については、「テーブルのプロパティを構成する」をご参照ください。テーブルを作成する際に適切なインデックスを構成すると、SQL 文の実行後にクエリ対象のデータをすばやく見つけることができます。これにより、I/O リソースの消費が削減され、より少ない計算リソースでクエリが高速化されます。次の図は、SQL 文の実行からデータの取得までの実行プロセスを示しています。次の図は、実行プロセスで使用される各インデックスを理解し、ビジネス要件に基づいて適切なインデックスを構成するのに役立ちます。建表索引总结

  1. この例では、パーティションテーブルに対して SQL クエリを実行し、パーティションプルーニング機能を使用して目的のデータが存在するパーティションを見つけます。

  2. 分散キーを使用して、目的のデータが存在するシャードを見つけることができます。

  3. イベント時間列を使用して、目的のデータが存在するファイルを見つけることができます。イベント時間列は、以前はセグメントキーと呼ばれていました。

  4. クラスタリングキーを使用して、ファイル内のデータをソートし、目的のデータが存在するファイルブロックを見つけることができます。

  5. ビットマップインデックスを使用して、目的のデータが存在する行を見つけることができます。ビットマップインデックスは、ファイル内のインデックスです。

次の表に、さまざまなインデックスのシナリオを示します。

インデックス

説明

クエリのサンプル文

分散キー

GROUP BY 操作が頻繁に実行される列、または複数のテーブルを結合するために使用される列を指定して、分散キーを構成します。これにより、データシャッフリングが削減され、ローカル結合が実装されます。

select * from tbl1 join tbl2 on tbl1.a=tbl2.c;

クラスタリングキー

範囲クエリ列またはフィルタークエリ列を指定して、クラスタリングキーを構成します。インデックスベースのデータフィルタリングは、左端一致の原則に準拠しています。クラスタリングキーを構成する列は 2 つ以下にすることをお勧めします。

select sum(a) from tb1 where a > 100 and a < 200;

ビットマップ

等価クエリ列を指定して、ビットマップインデックスを構成します。

select * from tb1 where a =100;

イベント時間列(セグメントキー)

ログ列やトラフィック列など、時間と強い相関関係のある列を指定して、イベント時間列を構成します。

select sum(a) from tb1 where ts > '2020-01-01' and a < '2020-03-02';

テーブルのプロパティを構成する

Hologres は、テーブルプロパティを構成するための set_table_propertycreate table with を提供しています。テーブルプロパティを適切に設定することで、Hologres はデータを効率的にソートおよびクエリできます。データストレージレイアウトに関連するパラメーターは、CREATE TABLE 文と一緒に実行する必要があります。

  • 構文

    -- Hologres V2.1 以降でサポートされている構文:
    create table <table_name> (...)
    with (property = 'value'[, ...]);
    
    -- すべての Hologres バージョンでサポートされている構文:
    call set_table_property('<table_name>', property, 'value');
    説明

    set_table_property 関数と CREATE TABLE 文は、同じトランザクションで実行する必要があります。

    Hologres では、以下のプロパティを含む(ただしこれらに限定されない)テーブルプロパティを構成するための SQL 文を実行できます。

    • Hologres V2.1 以降でサポートされている構文:

      CREATE TABLE <table_name> (...)
      WITH (
          orientation = '[column | row | row,column]',
          table_group = '[tableGroupName]',
          distribution_key = 'columnName[,...]]',
          clustering_key = '[columnName{:asc}] [,...]]',
          event_time_column = '[columnName [,...]]',
          bitmap_columns = '[columnName [,...]]',
          dictionary_encoding_columns = '[columnName [,...]]',
          time_to_live_in_seconds = '<non_negative_literal>'
          [,storage_mode, ...]
      );
    • すべての Hologres バージョンでサポートされている構文:

      BEGIN;
      CREATE TABLE <table_name> (...);
      call set_table_property('table_name', 'orientation', '[column | row]');
      call set_table_property('table_name', 'table_group', '[tableGroupName]');
      call set_table_property('table_name', 'distribution_key', '[columnName[,...]]');
      call set_table_property('table_name', 'clustering_key', '[columnName{:asc}] [,...]]');
      call set_table_property('table_name', 'event_time_column', '[columnName [,...]]');
      call set_table_property('table_name', 'bitmap_columns', '[columnName [,...]]');
      call set_table_property('table_name', 'dictionary_encoding_columns', '[columnName [,...]]');
      call set_table_property('table_name', 'time_to_live_in_seconds', '<non_negative_literal>');
      COMMIT;
  • プロパティ

    次の表に、さまざまなタイプのテーブルのプロパティとその設定を示します。

    プロパティ

    説明

    列指向テーブル

    行指向テーブル

    行と列のハイブリッドテーブル

    推奨設定

    テーブル作成後に変更可能

    orientation

    テーブルのストレージモード。

    デフォルト値: column。

    row

    row,column

    column

    いいえ。このプロパティを変更する場合は、別のテーブルを作成してください。

    table_group

    テーブルが属するテーブルグループ。

    デフォルトでは、デフォルトのテーブルグループが使用されます。

    デフォルトでは、デフォルトのテーブルグループが使用されます。

    デフォルトでは、デフォルトのテーブルグループが使用されます。

    デフォルト値を使用してください。

    いいえ。このプロパティを変更する場合は、別のテーブルを作成するか、既存のテーブルを再シャードしてください。

    distribution_key

    テーブルの分散キー。

    デフォルトでは、プライマリキーが分散キーとして構成されます。ビジネス要件に基づいて分散キーを変更できます。

    デフォルトでは、プライマリキーが分散キーとして構成されます。

    デフォルトでは、プライマリキーが分散キーとして構成されます。

    プライマリキー列の 1 つだけを分散キーとして指定することをお勧めします。

    いいえ。このプロパティを変更する場合は、別のテーブルを作成してください。

    clustering_key

    テーブルのクラスタリングキー。

    デフォルトでは、プロパティは空です。

    デフォルトでは、プライマリキーがクラスタリングキーとして使用されます。

    デフォルトでは、プロパティは空です。

    1 つの列だけをクラスタリングキーとして指定することをお勧めします。列の値は昇順でのみソートできます。

    いいえ。このプロパティを変更する場合は、別のテーブルを作成してください。

    event_time_column

    テーブルのイベント時間列。

    デフォルトでは、最初の null でないタイムスタンプ列がイベント時間列として使用されます。

    サポートされていません。

    デフォルトでは、最初の null でないタイムスタンプ列がイベント時間列として使用されます。

    タイムスタンプ列を指定することをお勧めします。

    いいえ。このプロパティを変更する場合は、別のテーブルを作成してください。

    bitmap_columns

    テーブルのビットマップインデックス。

    ビジネス要件に基づいてこのプロパティを構成します。

    サポートされていません。

    ビジネス要件に基づいてこのプロパティを構成します。

    等価比較に使用される列を 10 未満指定することをお勧めします。

    はい。詳細については、「ALTER TABLE」をご参照ください。

    dictionary_encoding_columns

    テーブルの列のディクショナリエンコーディング。

    ビジネス要件に基づいてこのプロパティを構成します。

    サポートされていません。

    ビジネス要件に基づいてこのプロパティを構成します。

    カーディナリティの低い列を 10 未満指定することをお勧めします。

    はい。詳細については、「ALTER TABLE」をご参照ください。

    time_to_live_in_seconds

    テーブルの生存時間(TTL)。

    ビジネス要件に基づいてこのプロパティを構成します。

    ビジネス要件に基づいてこのプロパティを構成します。

    ビジネス要件に基づいてこのプロパティを構成します。

    デフォルト値を使用してください。

    はい。詳細については、「ALTER TABLE」をご参照ください。

    • orientation

      このプロパティは、Hologres のデータベーステーブルで列指向ストレージモードと行指向ストレージモードのどちらを使用するかを指定します。Hologres V1.1 以降では、行と列のハイブリッドストレージモードがサポートされています。このプロパティを指定する場合は、次の構文を使用します。異なるストレージモードは、異なるクエリシナリオに適用されます。テーブルを作成するときは、デフォルトで列指向ストレージモードが使用されます。別のストレージモードを使用する場合は、テーブルを作成するときに明示的にストレージモードを指定します。詳細については、「テーブルのストレージモデル: 行指向ストレージ、列指向ストレージ、行と列のハイブリッドストレージ」をご参照ください。

      call set_table_property('table_name', 'orientation', '[column | row |row,column]');
    • table_group

      Hologres では、テーブルグループは論理ストレージの固有の概念であり、シャード数を管理するために使用されます。テーブルグループは、シャードのグループに対応します。データベースを作成するときにテーブルグループを作成しない場合、データベースに最初のテーブルを作成するときに、<db>_tg_default 形式の名前のデフォルトのテーブルグループが自動的に作成されます。他のテーブルを作成するときにテーブルグループを指定しないと、テーブルはデフォルトのテーブルグループに自動的に作成されます。ほとんどの場合、テーブルグループを指定する必要はありません。デフォルトのテーブルグループを使用できます。Hologres インスタンスに 256 個を超える CPU コアがある場合は、ビジネス要件に基づいて異なるテーブルグループを構成し、各テーブルグループのシャード数を指定することをお勧めします。これにより、パフォーマンスが向上します。詳細については、「テーブルグループとシャード数のユーザーガイド」をご参照ください。

      call set_table_property('table_name', 'table_group', '[tableGroupName]');
    • distribution_key

      このプロパティは、分散キーを指定します。distribution_key プロパティは、テーブル内のデータの分散ポリシーを指定するために使用されます。データは、分散キーに基づいて各シャードに分散されます。このプロパティを構成すると、同じ分散キー値のエントリが同じシャードに分散されます。分散キーは分散コンピューティングにとって重要であり、クエリのパフォーマンスを向上させ、クエリ/秒(QPS)を向上させるのに役立ちます。詳細については、「分散キー」をご参照ください。

      call set_table_property('table_name', 'distribution_key', '[columnName[,...]]');
    • clustering_key

      このプロパティは、クラスタリングキーを指定します。次の構文を使用して、クラスタリングキーを構成できます。Hologres は、クラスタリングキーに基づいてファイル内のデータをソートします。デフォルトでは、データは昇順でソートされます。クラスタリングキーは、インデックス列に対する範囲クエリとフィルタークエリを高速化し、クエリのパフォーマンスを向上させるのに役立ちます。詳細については、「クラスタリングキー」をご参照ください。

      call set_table_property('table_name', 'clustering_key', '[columnName{:asc} [,...]]');
    • event_time_column

      このプロパティは、イベント時間列を指定します。次の構文を使用して、イベント時間列を構成できます。ファイルは、イベント時間列に基づいてソートされます。イベント時間列にヒットすると、Hologres は必要なデータが存在するファイルをすばやく見つけることができます。event_time_column プロパティは、タイムスタンプ列など、データが単調に増加または減少する列に設定することをお勧めします。event_time_column プロパティは、ログ列やトラフィック列など、時間関連の列に適用できます。このプロパティを適切に設定することで、クエリのパフォーマンスを向上させることができます。詳細については、「イベント時間列(セグメントキー)」をご参照ください。

      call set_table_property('table_name', 'event_time_column', '[columnName [,...]]');
    • bitmap_columns

      このプロパティは、ビットマップインデックスを指定します。次の構文を使用して、ビットマップインデックスを構成できます。ビットマップインデックスを使用すると、条件を満たすデータが存在する行をすばやく見つけることができます。等価クエリ条件を満たす列をビットマップインデックス列として指定できます。デフォルトでは、列指向テーブルの TEXT 型のすべての列が暗黙的にビットマップインデックス列として指定されます。詳細については、「ビットマップインデックス」をご参照ください。

      call set_table_property('table_name', 'bitmap_columns', '[columnName{:[on|off]}[,...]]');
    • dictionary_encoding_columns

      このプロパティは、ディクショナリエンコーディング列を指定します。次の構文を使用して、ディクショナリエンコーディング列を構成できます。ディクショナリエンコーディングは、特定の列の値に対してディクショナリマッピングを作成するかどうかを指定します。ディクショナリマッピングを使用すると、文字列比較を数値比較に変換して、GROUP BY 操作や FILTER 操作を含むクエリなどを高速化できます。デフォルトでは、列指向テーブルの TEXT 型のすべての列がディクショナリエンコーディング列として指定されます。Hologres V0.9 以降では、データ特性に基づいてディクショナリマッピングを作成するかどうかが自動的に決定されます。

      call set_table_property('table_name', 'dictionary_encoding_columns', '[columnName{:[on|off|auto]}[,...]]');
    • time_to_live_in_seconds(推奨されません)

      このプロパティは、テーブル内のデータの TTL を指定します。単位: 秒。次の構文を使用して、TTL を構成できます。

      • システムは、データが更新された時刻ではなく、データが最初にテーブルに書き込まれた時刻から TTL の開始をカウントします。TTL を構成しない場合、テーブル内のデータはデフォルトで 100 年間保持されます。Hologres V1.3.24 以降では、最小 TTL を 1 日(86,400 秒に相当)に設定できます。TTL の詳細については、「SQL 文のリスト」をご参照ください。

      • TTL は正確な時間を指定しません。TTL が期限切れになると、テーブル内のデータは指定された時点ではなく、一定期間内に削除されます。データは削除されますが、データが存在するテーブルは引き続き存在します。そのため、重複するプライマリキーが表示される場合があります。本番環境では、TTL を使用してデータのライフサイクルを管理しないことをお勧めします。パーティションに基づいてデータのライフサイクルを管理することをお勧めします。詳細については、「CREATE PARTITION TABLE」をご参照ください。

      call set_table_property('table_name', 'time_to_live_in_seconds', '<non_negative_literal>');

制限

  • プライマリキーを構成するために複数の列を指定できます。プライマリキーを構成するために使用される 1 つまたは複数の列の値は一意である必要があり、null にすることはできません。1 つの文でテーブルのプライマリキーを構成するために複数の列を指定できます。FLOAT、DOUBLE、NUMERIC、ARRAY、JSON、DATE、およびその他の複合データ型の列は、プライマリキーを構成するために指定できません。プライマリキー列は null 許容にできません。プライマリキーは変更できません。プライマリキーを変更するには、別のテーブルを作成します。次のサンプルコードは、テーブルのプライマリキーを構成するために id 列と ds 列を指定する方法を示しています。

    BEGIN;
    CREATE TABLE public.test (
     "id" text NOT NULL,
     "ds" text NOT NULL,
    PRIMARY KEY (id,ds)
    );
    CALL SET_TABLE_PROPERTY('public.test', 'orientation', 'column');
    COMMIT;
  • 次の表に、column_constraints プロパティまたは table_constraints プロパティとして構成できるパラメーターを示します。

    パラメーター

    column_constraints

    table_constraints

    primary key

    サポートされています

    サポートされています

    not null

    サポートされています

    -

    null

    サポートされています

    -

    unique

    サポートされていません

    サポートされていません

    check

    サポートされていません

    サポートされていません

    default

    サポートされています

    サポートされていません

  • キーワード、予約パラメーター、システムパラメーター、特殊文字、大文字と小文字は、エスケープするために二重引用符(")で囲む必要があります。

    • Hologres はキーワードに次の制限を課します。列名は hg_ で始めることができず、スキーマ名は holo_hg_、または pg_ で始めることができません。また、PostgreSQL がキーワード、予約パラメーター、およびシステムパラメーターに課す仕様にも準拠する必要があります。詳細については、「SQL キーワード」および「システム列」をご参照ください。PostgreSQL キーワードを列名として使用する場合は、エスケープするためにキーワードを二重引用符(")で囲む必要があります。

    • テーブル名と列名は大文字と小文字が区別されません。大文字で、特殊文字を含む、または数字で始まるテーブル名または列名を定義するには、エスケープするために名前を二重引用符(")で囲みます。

    • カスタムフィールドの名前が ctid などのシステムフィールドと同じ名前の場合、エラーメッセージが報告されることがあります。

    • Hologres V2.0 以降では、列名をエスケープする必要があるテーブルのプロパティを構成するための構文が改善されています。エスケープする必要がある名前の列のテーブルプロパティを構成する場合は、新しい構文を使用する必要があります。元の構文を引き続き使用する場合は、Grand Unified Configuration(GUC)パラメーターを使用して元の構文を有効にする必要があります。

      -- セッションレベルで元の構文を有効にします。
      set hg_disable_parse_holo_property = on;
      
      -- データベースレベルで元の構文を有効にします。
      alter database <db_name> set hg_disable_parse_holo_property = on;

      次の文は例を示しています。

      説明

      数字で始まる名前の列をクエリする場合は、名前をエスケープするために名前を二重引用符(")で囲む必要もあります。そうしないと、列名は解析されません。

      create table "TBL" (a int);
      select relname from pg_class where relname = 'TBL';
      insert into "TBL" values (-1977);
      select * from "TBL";
      ------------------------------------------------------------------
      -- Hologres V2.0 以降で、エスケープする必要がある名前の列のプロパティを構成するために使用される構文
      begin;
      create table tbl (c1 int not null);
      call set_table_property('tbl', 'clustering_key', '"c1":asc'); 
      commit;
      -- Hologres V2.0 より前のバージョンで、エスケープする必要がある名前の列のプロパティを構成するために使用される構文
      begin;
      create table tbl (c1 int not null);
      call set_table_property('tbl', 'clustering_key', '"c1:asc"'); 
      commit;
      ------------------------------------------------------------------
      -- Hologres V2.1 以降で大文字を含む名前の複数の列のプロパティを構成するために使用される構文
      begin;
      create table tbl ("C1" int not null, c2 text not null) with (clustering_key = '"C1",c2');
      commit;
      -- Hologres V2.0 以降で大文字を含む名前の複数の列のプロパティを構成するために使用される構文
      begin;
      create table tbl ("C1" int not null, c2 text not null);
      call set_table_property('tbl', 'clustering_key', '"C1",c2'); 
      commit;
      -- Hologres V2.0 より前のバージョンで大文字を含む名前の複数の列のプロパティを構成するために使用される構文
      begin;
      create table tbl ("C1" int not null, c2 text not null);
      call set_table_property('tbl', 'clustering_key', '"C1,c2"'); 
      commit;
      ------------------------------------------------------------------
      create table "Tab_$A%*" (a int);
      select relname from pg_class where relname = 'Tab_$A%*';
      insert into "Tab_$A%*" values (-1977);
      select * from "Tab_$A%*";
      ------------------------------------------------------------------
      create table tbl ("2c" int not null);
      insert into tbl values (3), (4);
      select "2c" from tbl;
  • 同じ名前のテーブルが存在せず、セマンティクスが正しい場合、テーブルの作成は成功します。IF NOT EXISTS パラメーターが指定されておらず、同じ名前のテーブルが存在する場合、エラーが返されます。IF NOT EXISTS パラメーターが指定されており、同じ名前のテーブルが存在する場合、Hologres は通知を表示し、テーブルを作成する手順をスキップして、SUCCEED を返します。次の表にルールを示します。

    シナリオ

    IF NOT EXISTS が指定されている場合の応答

    IF NOT EXISTS が指定されていない場合の応答

    同じ名前のテーブルが存在します。

    NOTICE: relation “xx“already exists, skippingSUCCEED

    ERROR: relation is already exists.

    同じ名前のテーブルは存在しません。

    SUCCEED

    SUCCEED

  • テーブル名は 127 バイト以下にする必要があります。そうしないと、テーブル名は切り捨てられます。

  • テーブルを作成した後は、テーブルのデータ型を変更できません。データ型を変更する必要がある場合は、別のテーブルを作成します。

  • 行指向テーブルまたは行と列のハイブリッドテーブルには、プライマリキーを指定する必要があります。列指向テーブルでは、プライマリキーはオプションです。

  • テーブルを作成した後は、列の順序を変更できません。列の順序を変更する必要がある場合は、別のテーブルを作成します。

  • テーブルを作成した後は、orientation、distribution_key、clustering_key、または event_time_column プロパティを変更できません。これは、これらのプロパティがデータの書き込み後のデータのストレージレイアウトを決定するためです。これらのプロパティを変更する場合は、別のテーブルを作成します。bitmap_columns プロパティと dictionary_encoding_columns プロパティは、テーブルを作成した後に変更できます。これらのプロパティは、データのストレージレイアウトには影響しません。

  • 既存のテーブルの not null 列を nullable 列に変更することはできず、nullable 列を not null 列に変更することもできません。これらの列を変更する場合は、別のテーブルを作成します。

テーブルスキーマをクエリする

次の文を実行して、テーブルスキーマをクエリできます。

create extension hg_toolkit; -- この文はデータベースレベルで有効になります。データベースでこの文を実行する必要があるのは 1 回だけです。
select hg_dump_script('[<schema_name>.]<table_name>');
説明
  • HoloWeb コンソールの [メタデータ管理] タブに移動して、DDL 文を使用してテーブルスキーマをクエリすることもできます。

  • Hologres V2.2 以降では、hg_dump_script によって返されるテーブルプロパティは、CALL 構文ではなく WITH 構文で表示されます。これにより、CREATE TABLE 文の利便性と可読性が向上します。

  • 列指向テーブルを作成し、プライマリキーを構成します。

    説明

    分散キーは、プライマリキーを構成する列のサブセットである必要があります。

    begin;
    CREATE TABLE tbl (
     "id" bigint NOT NULL,
     "name" text NOT NULL,
     "age" bigint,
     "class" text NOT NULL,
     "reg_timestamp" timestamptz NOT NULL,
    PRIMARY KEY (id,age)
    );
    call set_table_property('tbl', 'orientation', 'column');
    call set_table_property('tbl', 'distribution_key', 'id');
    call set_table_property('tbl', 'clustering_key', 'age');
    call set_table_property('tbl', 'event_time_column', 'reg_timestamp');
    call set_table_property('tbl', 'bitmap_columns', 'name,class');
    call set_table_property('tbl', 'dictionary_encoding_columns', 'class:auto');
    commit;
  • パーティションテーブルを作成し、プライマリキーを構成します。

    説明

    パーティションテーブルのプライマリキーを構成する場合は、プライマリキーにパーティションキー列を含める必要があります。

    begin;
    CREATE TABLE www (
     name text NOT NULL,
     ds text NOT NULL,
     age text NOT NULL,
    PRIMARY KEY (name,ds)
    )
    PARTITION BY LIST(ds);
    CALL SET_TABLE_PROPERTY('www', 'orientation', 'column');
    commit;

    パーティションテーブルの子テーブルを作成する必要があります。子テーブルの作成方法の詳細については、「CREATE PARTITION TABLE」をご参照ください。

  • テーブルを作成し、列のデフォルト値を指定します。

    begin;
    CREATE TABLE tbl_default (    
      smallint_col smallint DEFAULT 0,    
      int_col int DEFAULT 0,    
      bigint_col bigint DEFAULT 0,    
      boolean_col boolean DEFAULT FALSE,    
      float_col real DEFAULT 0.0,    
      double_col double precision DEFAULT 0.0,    
      decimal_col decimal(2, 1) DEFAULT 0.0,    
      text_col text DEFAULT 'N',    
      char_col char(2) DEFAULT 'N',    
      varchar_col varchar(200) DEFAULT 'N',    
      timestamptz_col timestamptz DEFAULT now(),    
      date_col date DEFAULT now(),    
      timestamp_col timestamp DEFAULT now()
    );
    commit;

HoloWeb コンソールで内部テーブルを作成する

HoloWeb を使用すると、SQL 文を記述することなく、視覚化された方法で内部テーブルを作成できます。HoloWeb コンソールで内部テーブルを作成するには、次の手順を実行します。

  1. Holoweb コンソールにログオンします。詳細については、「HoloWeb に接続する」をご参照ください。

  2. Holoweb コンソールの上部ナビゲーションバーで、メタデータ管理 をクリックします。次に、テーブルをクリックします。

    また、接続済みインスタンスタブの左側のナビゲーションウィンドウで [メタデータ管理] をクリックすることもできます。目的のインスタンスをクリックし、管理するデータベースをクリックします。管理するスキーマを右クリックし、内部テーブルの作成を選択します。

  3. [内部テーブルの作成] ページで、ビジネス要件に基づいてパラメーターを構成します。次の表にパラメーターを示します。

    パラメーターの説明(詳細を表示)

    セクション

    パラメーター

    説明

    基本情報

    モード

    スキーマの名前。

    public という名前のデフォルトスキーマまたはカスタムスキーマを選択できます。

    テーブル名

    作成する Hologres 内部テーブルの名前。

    説明

    作成する Hologres 内部テーブルの説明。

    フィールド

    フィールド名

    内部テーブルの各列の名前。

    データ型

    各列のデータ型。

    プライマリキー

    列を内部テーブルのプライマリキーとして構成するかどうかを指定します。

    Null 許容

    列を null にできるかどうかを指定します。

    配列

    列が要素の順序付き配列であるかどうかを指定します。

    説明

    列の説明。

    操作

    列で実行できる操作。列を [削除] したり、列を [上] または [下] に移動したりできます。

    属性

    ストレージモード

    テーブルのストレージモード。有効な値: [列指向ストレージ][行指向ストレージ][行と列のストレージ]

    デフォルト値: [列指向ストレージ]

    データのライフサイクル

    テーブル内のデータの TTL。システムは、データが最初にテーブルに書き込まれた時刻から TTL の開始をカウントします。TTL が期限切れになると、テーブルのデータは指定された時点ではなく、一定期間内に削除されます。

    デフォルト値: [最大]

    バイナリログ

    テーブルのバイナリロギングを有効にするかどうかを指定します。詳細については、「Hologres バイナリログをサブスクライブする」をご参照ください。

    バイナリログのライフサイクル

    バイナリログの TTL。詳細については、「Hologres バイナリログをサブスクライブする」をご参照ください。デフォルト値: [最大]

    分散列

    テーブルの 分散キー。詳細については、「分散キー」をご参照ください。

    イベント時間列

    テーブルの イベント時間列。詳細については、「イベント時間列(セグメントキー)」をご参照ください。

    クラスタリングキー

    テーブルの クラスタリングキー。詳細については、「クラスタリングキー」をご参照ください。

    ディクショナリエンコーディング列

    テーブルの ディクショナリエンコーディング列。詳細については、「ディクショナリエンコーディング」をご参照ください。

    ビットマップ列

    テーブルの ビットマップ列。詳細については、「ビットマップインデックス」をご参照ください。

    パーティションテーブル

    該当なし

    内部テーブルのパーティションキー列を選択します。

  4. 右上隅にある [送信] をクリックします。[送信] をクリックした後、左側のインスタンスリストを更新できます。作成された内部テーブルは、選択したスキーマの下に表示されます。

その他の操作:

  • 内部テーブルを編集する

    1. [メタデータ管理] ページに移動し、[接続済みインスタンス] で編集する内部テーブルをダブルクリックします。

    2. テーブル情報タブで、[テーブルの編集] をクリックして、列の追加やテーブル内のデータの TTL の変更など、テーブルのプロパティを変更します。

    3. [送信] をクリックします。

  • 内部テーブルを削除する

    1. [メタデータ管理] ページに移動し、[接続済みインスタンス] で削除する内部テーブルを右クリックし、[テーブルの削除] を選択します。删除内部表

    2. [テーブルの削除] メッセージで、[OK] をクリックします。

  • テーブル内のデータを表示する

    1. [接続済みインスタンス] で、データを表示する内部テーブルをダブルクリックします。

    2. テーブル情報タブで、[データプレビュー] をクリックして、テーブル内のデータをプレビューします。数据预览

  • DDL 文を表示する

    テーブル詳細タブで、[DDL 文] をクリックして、テーブルの DDL 文を表示します。DDL语句

次のステップ

テーブルを作成した後、INSERT 文を実行するか、データを同期または移行することで、テーブルにデータをインポートできます。詳細については、「INSERT」、「概要」、および「データ移行」をご参照ください。

関連情報

  • 既存のテーブルの構造とデータをコピーしてテーブルを作成する方法の詳細については、「CREATE TABLE AS」をご参照ください。既存のテーブルのスキーマとプロパティをコピーしてテーブルを作成する方法の詳細については、「CREATE TABLE LIKE」をご参照ください。

  • パーティションテーブルの作成方法の詳細については、「CREATE PARTITION TABLE」をご参照ください。

  • 外部テーブルの作成方法の詳細については、「CREATE FOREIGN TABLE」をご参照ください。

  • テーブルプロパティの変更方法の詳細については、「ALTER TABLE」をご参照ください。

  • Hologres での SQL 文の実行中に報告される一般的なエラーとその解決策の詳細については、「Hologres SQL 文に関するよくある質問」をご参照ください。