Todos los productos
Search
Centro de documentos

Hologres:CREATE TABLE LIKE

Última actualización: Sep 19, 2026

Ejecute la instrucción CREATE TABLE LIKE para crear una tabla con el mismo esquema que la tabla obtenida al ejecutar la instrucción SELECT especificada. En este tema se describe cómo ejecutar la instrucción CREATE TABLE LIKE.

Límites

  • En Hologres V0.9 y versiones anteriores, la instrucción CREATE TABLE LIKE solo copia esquemas de tablas. No copia propiedades como la clave primaria o el índice. Consulte la versión de una instancia de Hologres en la página de detalles de la instancia dentro de la consola de Hologres.

  • A partir de Hologres V0.10, la instrucción CREATE TABLE LIKE copia tanto los esquemas como las propiedades de las tablas, incluyendo la clave primaria y el índice. Para copiar las propiedades de otra tabla durante la creación, ejecute el siguiente comando y establezca el parámetro Grand Unified Configuration (GUC) correspondiente en true. Después, utilice la instrucción SELECT * FROM <table_name> dentro de CREATE TABLE LIKE. Otras instrucciones SELECT, como SELECT <column_1>, <column_2> FROM <table_name>, no son compatibles.

    set hg_experimental_enable_create_table_like_properties=true;
  • La instrucción CREATE TABLE LIKE no sincroniza datos desde la tabla de origen.

  • Si especifica columnas en la instrucción SELECT, asigne un alias único a cada una. Cuando distintas columnas comparten el mismo alias, la instrucción CREATE TABLE LIKE genera varias columnas con el mismo nombre en la tabla. Esto provoca que se devuelva un mensaje de error. A continuación se muestran algunas instrucciones de ejemplo:

    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
  • Al ejecutar la instrucción CREATE TABLE LIKE, se copian los comentarios de columna y las propiedades del registro binario. No es posible copiar los comentarios de tabla ni la propiedad de particionamiento dinámico. A partir de la versión V3.0.33, la copia de comentarios de tabla ya es compatible.

Crear una tabla estándar

  1. Syntax

    Para crear una tabla estándar en Hologres, utilice la instrucción CREATE TABLE LIKE con la siguiente sintaxis:

    -- 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');
    Nota

    Después de llamar a la función hg_create_table_like, Hologres crea una tabla con el mismo esquema que la tabla obtenida al ejecutar la instrucción SQL indicada en el parámetro select_query. El parámetro new_table_name define el nombre de la tabla por crear. No se insertan datos en la tabla.

  2. Parameter Description

    • new_table_name: el nombre de la tabla por crear. Establezca este parámetro como una cadena fija. No utilice una cadena de variables ni una función que genere nombres de tablas. La instrucción CREATE TABLE LIKE no permite crear tablas externas.

    • select_query: la instrucción SQL que consulta los datos. Si establece el parámetro select_query como select * from tablename, la instrucción CREATE TABLE LIKE copia automáticamente todas las propiedades de la tabla de origen, incluida la clave primaria y el índice. Si la instrucción SQL contiene muchas comillas simples ('), especifique la consulta con el formato $$query_sql$$ para escapar dichas comillas. Este método simplifica la operación. Instrucción de ejemplo:

      CALL HG_CREATE_TABLE_LIKE ('table_name', $$query_sql$$ [, 'partition_clause'])
    • old_table_name: el nombre de la tabla que se va a copiar.

  3. Example

    En este ejemplo, la tabla de origen se crea en Hologres mediante las siguientes instrucciones:

    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;

    Ejecute la instrucción CREATE TABLE LIKE con alguno de los siguientes métodos para crear una tabla en Hologres a partir de la tabla de origen:

    • Para crear una tabla que copie el esquema y las propiedades de la tabla de origen, ejecute las siguientes instrucciones:

      -- 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');
    • Para crear una tabla y agregar una columna al esquema de la tabla de origen, ejecute la siguiente instrucción:

      -- 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$$);

Crear una tabla particionada

  1. Syntax

    Para crear una tabla particionada en Hologres, utilice la instrucción CREATE TABLE LIKE con la siguiente sintaxis:

    -- 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: el nombre de la tabla por crear. Establezca este parámetro como una cadena fija. No utilice una cadena de variables ni una función que genere nombres de tablas. La instrucción CREATE TABLE LIKE no permite crear tablas externas.

    • select_query: la instrucción SQL que consulta los datos. Si establece el parámetro select_query como select * from tablename, la instrucción CREATE TABLE LIKE copia automáticamente todas las propiedades de la tabla de origen, incluida la clave primaria y el índice. Si la instrucción SQL contiene muchas comillas simples ('), especifique la consulta con el formato $$query_sql$$ para escapar dichas comillas. Este método simplifica la operación. Instrucción de ejemplo:

      CALL HG_CREATE_TABLE_LIKE ('table_name', $$query_sql$$ [, 'partition_clause'])
    • partition_clause: la cláusula que particiona la tabla y define la clave de partición. Hologres no crea automáticamente las tablas particionadas secundarias, por lo que debe crearlas de forma manual.

  3. Example

    En este ejemplo, la tabla de origen se crea en Hologres mediante las siguientes instrucciones:

    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;

    Ejecute la instrucción CREATE TABLE LIKE para crear una tabla particionada en Hologres a partir de la tabla de origen. Luego, ejecute instrucciones CREATE TABLE para generar las tablas particionadas secundarias:

    • Para crear la tabla particionada, ejecute la siguiente instrucción:

      -- 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)');
    • Para crear las tablas particionadas secundarias de la tabla particionada, ejecute las siguientes instrucciones:

      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.

Copiar una tabla en la consola de HoloWeb

HoloWeb le permite copiar una tabla de manera visual sin necesidad de escribir instrucciones SQL. Procedimiento:

  1. Vaya a la consola de HoloWeb. Para obtener más información, consulte Connect to HoloWeb and run SQL queries.

  2. En la barra de menú superior de la página de HoloWeb, haga clic en Metadata Management.

  3. En la lista Instances Connected de la página Metadata Management, haga clic con el botón derecho en la tabla que desea replicar y seleccione Replicate Table Schema.

  4. En la pestaña Replicate Table Schema, configure los siguientes parámetros.

    Sección

    Parámetro

    Descripción

    Destination Location

    Table name

    El nombre de la tabla de destino. Configure un nombre personalizado. Valor predeterminado: Source table name_copy.

    Description

    La descripción de la tabla de destino. Este parámetro es opcional.

    Schema

    El nombre del esquema donde reside la tabla de destino. Valor predeterminado: public.

    Advanced Settings

    Replicate Properties of Source Table

    Indica si se copian las propiedades de la tabla de origen a la tabla de destino.

    Nota

    La replicación de propiedades de la tabla de origen solo es compatible con instancias de Hologres que ejecutan la versión V0.10 o posterior. Para versiones anteriores, seleccione No o actualice su instancia.

  5. Haga clic en Submit en la esquina superior derecha para crear la tabla replicada.