Tous les produits
Search
Centre de documentation

Hologres:CREATE TABLE LIKE

Dernière mise à jour :Aug 20, 2026

L'instruction CREATE TABLE LIKE permet de créer une table dont le schéma est identique à celui obtenu par l'exécution d'une instruction SELECT spécifiée. Cette rubrique décrit comment exécuter l'instruction CREATE TABLE LIKE.

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. Vous pouvez consulter 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 ces propriétés lors de la création d'une table, définissez le paramètre Grand Unified Configuration (GUC) correspondant sur true en exécutant la commande suivante. Vous devez ensuite utiliser l'instruction SELECT * FROM <table_name> au sein de l'instruction CREATE TABLE LIKE. Les autres formes d'instructions SELECT, telles que 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, chaque colonne doit disposer d'un alias unique. 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 liées aux 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

    La syntaxe suivante permet de créer une table standard dans Hologres à l'aide de 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 résultant de l'exécution de l'instruction SQL indiquée par 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 recevoir une chaîne fixe ; il n'accepte ni les variables ni les fonctions générant un nom de table. L'instruction CREATE TABLE LIKE ne permet pas de créer une table externe.

    • 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 ci-dessous :

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

      -- 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

    La syntaxe suivante permet de créer une table partitionnée dans Hologres à l'aide de 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 recevoir une chaîne fixe ; il n'accepte ni les variables ni les fonctions générant un nom de table. L'instruction CREATE TABLE LIKE ne permet pas de créer une table externe.

    • 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 de partitionnement de la table. Elle spécifie la clé de partition. Hologres ne crée pas automatiquement les tables de partition enfants ; 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 enfants :

    • 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 enfants 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 écrire 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 n'est prise en charge que sur les instances Hologres exécutant la version V0.10 ou ultérieure. 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.