Tous les produits
Search
Centre de documentation

Hologres:CREATE TABLE LIKE

Dernière mise à jour :Sep 18, 2026

L'instruction CREATE TABLE LIKE permet de créer une table dont le schéma est identique à celui résultant de l'exécution d'une instruction SELECT spécifiée. Cette rubrique explique comment utiliser cette instruction.

Limites

  • Dans Hologres V0.9 et versions antérieures, l'instruction CREATE TABLE LIKE ne copie que le schéma de la table, sans inclure les propriétés telles que la clé primaire et les index. Consultez la version de votre instance Hologres sur la page des détails de l'instance dans la console Hologres.

  • À partir de Hologres V0.10, l'instruction CREATE TABLE LIKE copie à la fois le schéma et les propriétés de la table (clé primaire, index, etc.). Pour copier les propriétés d'une autre table lors de la création, définissez le paramètre Grand Unified Configuration (GUC) correspondant sur true en exécutant la commande suivante. Ensuite, utilisez l'instruction SELECT * FROM <table_name> au sein de l'instruction CREATE TABLE LIKE. Les autres instructions SELECT, comme SELECT <column_1>, <column_2> FROM <table_name>, ne sont pas prises en charge.

    set hg_experimental_enable_create_table_like_properties=true;
  • L'instruction CREATE TABLE LIKE ne synchronise pas les données de la table source.

  • Si vous spécifiez des colonnes dans l'instruction SELECT, attribuez un alias unique à chaque colonne. L'utilisation du même alias pour plusieurs colonnes entraîne la création de colonnes homonymes dans la nouvelle table, ce qui provoque une erreur. Exemple :

    CALL hg_create_table_like('new_table', 'select *, 1 as c, ''a'' as c from src_table');
    ERROR:  column "c" specified more than once
    CONTEXT:  SQL statement "create table new_table (
    "a"     integer,
    "b"     text,
    "c"     integer,
    "c"     text
    );"
    PL/pgSQL function hg_create_table_like(text,text) line 22 at EXECUTE
  • Lors de l'exécution de l'instruction CREATE TABLE LIKE, vous pouvez copier les commentaires de colonne et les propriétés des journaux binaires. En revanche, les commentaires de table et la propriété de partitionnement dynamique ne sont pas copiés. La copie des commentaires de table est prise en charge à partir de la version V3.0.33.

Créer une table standard

  1. Syntax

    Utilisez la syntaxe suivante pour créer une table standard dans Hologres avec l'instruction CREATE TABLE LIKE :

    -- Copy a standard table without its properties.
    CALL hg_create_table_like('new_table_name', 'select_query');
    -- Copy a table and its properties.
    set hg_experimental_enable_create_table_like_properties=true; -- Session-level parameter.
    CALL hg_create_table_like('new_table_name', 'select * from old_table_name');
    Remarque

    Après l'appel de la fonction hg_create_table_like, Hologres crée une table dont le schéma correspond à celui obtenu par l'exécution de l'instruction SQL indiquée dans le paramètre select_query. Le paramètre new_table_name définit le nom de la table à créer. Aucune donnée n'est insérée dans cette table.

  2. Parameter Description

    • new_table_name : nom de la table à créer. Ce paramètre doit être une chaîne fixe ; il ne peut pas s'agir d'une variable ou d'une fonction générant un nom de table. Il est impossible de créer une table étrangère via l'instruction CREATE TABLE LIKE.

    • select_query : instruction SQL utilisée pour interroger les données. Si vous définissez select_query sur select * from tablename, l'instruction CREATE TABLE LIKE copie automatiquement toutes les propriétés de la table source, y compris la clé primaire et les index. Si l'instruction SQL contient de nombreuses apostrophes ('), nous vous recommandons d'utiliser le format $$query_sql$$ pour échapper ces caractères. Cette approche simplifie les opérations. Exemple :

      CALL HG_CREATE_TABLE_LIKE ('table_name', $$query_sql$$ [, 'partition_clause'])
    • old_table_name : nom de la table à copier.

  3. Example

    Dans cet exemple, la table source est créée dans Hologres à l'aide des instructions suivantes :

    BEGIN;
    CREATE TABLE public.src_table (
     "a" int8 NOT NULL,
     "b" text NOT NULL,
    PRIMARY KEY (a)
    );
    CALL SET_TABLE_PROPERTY('public.src_table', 'orientation', 'column');
    CALL SET_TABLE_PROPERTY('public.src_table', 'bitmap_columns', 'b');
    CALL SET_TABLE_PROPERTY('public.src_table', 'dictionary_encoding_columns', 'b:auto');
    CALL SET_TABLE_PROPERTY('public.src_table', 'time_to_live_in_seconds', '3153600000');
    CALL SET_TABLE_PROPERTY('public.src_table', 'distribution_key', 'a');
    CALL SET_TABLE_PROPERTY('public.src_table', 'storage_format', 'segment');
    COMMIT;

    Pour créer une table dans Hologres à partir de la table source, exécutez l'instruction CREATE TABLE LIKE selon l'une des méthodes suivantes :

    • Pour créer une table en copiant à la fois le schéma et les propriétés de la table source, exécutez les instructions ci-dessous :

      -- Create a table by copying both the schema and properties of the source table.
      set hg_experimental_enable_create_table_like_properties=true;
      CALL hg_create_table_like('new_table', 'select * from src_table');
    • Pour créer une table en ajoutant une colonne au schéma de la table source, exécutez l'instruction suivante :

      -- Create a table by adding Column c to the schema of the source table. Column c has the same properties as Column b.
      CALL hg_create_table_like('holo_table_1', $$select *, "b" as c from src_table$$);

Créer une table partitionnée

  1. Syntax

    Utilisez la syntaxe suivante pour créer une table partitionnée dans Hologres avec l'instruction CREATE TABLE LIKE :

    -- Create a partitioned table by copying the schema, but not the properties, of another table.
    CALL hg_create_table_like('new_table_name', 'select_query', 'partition_clause');
  2. Parameter Description

    • new_table_name : nom de la table à créer. Ce paramètre doit être une chaîne fixe ; il ne peut pas s'agir d'une variable ou d'une fonction générant un nom de table. Il est impossible de créer une table étrangère via l'instruction CREATE TABLE LIKE.

    • select_query : instruction SQL utilisée pour interroger les données. Si vous définissez select_query sur select * from tablename, l'instruction CREATE TABLE LIKE copie automatiquement toutes les propriétés de la table source, y compris la clé primaire et les index. Si l'instruction SQL contient de nombreuses apostrophes ('), nous vous recommandons d'utiliser le format $$query_sql$$ pour échapper ces caractères. Cette approche simplifie les opérations. Exemple :

      CALL HG_CREATE_TABLE_LIKE ('table_name', $$query_sql$$ [, 'partition_clause'])
    • partition_clause : clause utilisée pour partitionner la table. Elle spécifie la clé de partition. Hologres ne crée pas automatiquement les tables de partition enfant ; vous devez les créer manuellement.

  3. Example

    Dans cet exemple, la table source est créée dans Hologres à l'aide des instructions suivantes :

    BEGIN;
    CREATE TABLE public.src_table (
     "a" int8 NOT NULL,
     "b" text NOT NULL,
    PRIMARY KEY (a)
    );
    CALL SET_TABLE_PROPERTY('public.src_table', 'orientation', 'column');
    CALL SET_TABLE_PROPERTY('public.src_table', 'bitmap_columns', 'b');
    CALL SET_TABLE_PROPERTY('public.src_table', 'dictionary_encoding_columns', 'b:auto');
    CALL SET_TABLE_PROPERTY('public.src_table', 'time_to_live_in_seconds', '3153600000');
    CALL SET_TABLE_PROPERTY('public.src_table', 'distribution_key', 'a');
    CALL SET_TABLE_PROPERTY('public.src_table', 'storage_format', 'segment');
    COMMIT;

    Pour créer une table partitionnée dans Hologres à partir de la table source, exécutez l'instruction CREATE TABLE LIKE, puis utilisez des instructions CREATE TABLE pour créer les tables de partition enfant :

    • Pour créer la table partitionnée, exécutez l'instruction suivante :

      -- Create a partitioned table by adding Column ds to the schema of the source table. Configure Column ds as the partition key.
      CALL hg_create_table_like('new_table', $$select *, "b" as ds from src_table$$, 'partition by list(ds)');
    • Pour créer les tables de partition enfant associées à la table partitionnée, exécutez les instructions suivantes :

      create table new_table_child_20201213 partition of new_table for values in('20201213');-- Specify 20201213 as a partition key value.
      create table new_table_child_20201214 partition of new_table for values in('20201214');-- Specify 20201214 as a partition key value.

Copier une table dans la console HoloWeb

HoloWeb vous permet de copier une table via une interface visuelle, sans avoir à rédiger d'instructions SQL. Procédure :

  1. Accédez à la console HoloWeb. Pour plus d'informations, consultez la rubrique Se connecter à HoloWeb et exécuter des requêtes SQL.

  2. Dans la barre de menu supérieure de la page HoloWeb, cliquez sur Metadata Management.

  3. Dans la liste Instances Connected de la page Metadata Management, effectuez un clic droit sur la table à répliquer, puis sélectionnez Replicate Table Schema.

  4. Dans l'onglet Replicate Table Schema, configurez les paramètres suivants.

    Section

    Parameter

    Description

    Destination Location

    Table name

    Nom de la table de destination. Vous pouvez personnaliser ce nom. Valeur par défaut : Nom_de_la_table_source_copy.

    Description

    Description de la table de destination. Ce paramètre est facultatif.

    Schema

    Nom du schéma contenant la table de destination. Valeur par défaut : public.

    Advanced Settings

    Replicate Properties of Source Table

    Indique si les propriétés de la table source doivent être copiées vers la table de destination.

    Remarque

    La réplication des propriétés de la table source est uniquement disponible sur les instances Hologres V0.10 et versions ultérieures. Pour les versions antérieures, sélectionnez No ou mettez à niveau votre instance.

  5. Cliquez sur Submit dans le coin supérieur droit pour créer la table répliquée.