Saltar al contenido principal

Introducción

A veces es necesario volver a ingestar todos los datos de una tabla en otra. Por ejemplo, puede que quieras volver a ingestar datos de una tabla de staging a una tabla de producción. En este artículo se muestra cómo hacerlo con la sentencia INSERT INTO.

Ejemplo

A continuación, se muestra un ejemplo sencillo de cómo funciona y cómo probarlo:
  • Cree una base de datos de ejemplo
CREATE DATABASE db1;
  • Crear una tabla de ejemplo
CREATE TABLE db1.source_table
(
    city VARCHAR,
    country VARCHAR,
    continent VARCHAR
)
engine = MergeTree()
ORDER BY continent;
  • Inserta algunos datos en la tabla de origen
INSERT INTO db1.source_table (city, country, continent)
VALUES
    ('New York', 'USA', 'North America'),
    ('Tokyo', 'Japan', 'Asia'),
    ('Berlin', 'Germany', 'Europe'),
    ('Paris', 'France', 'Europe'),
    ('Cairo', 'Egypt', 'Africa'),
    ('Sydney', 'Australia', 'Australia');
  • Compruebe cuántas filas hay en la tabla de origen
SELECT COUNT(*) FROM db1.source_table;
┌─count()─┐
│      6  │
└─────────┘
  • Cree una nueva tabla con la misma estructura que la tabla de origen.
CREATE TABLE db1.target_table AS db1.source_table;
  • Inserte todas las filas de la tabla de origen en la tabla de destino.
INSERT INTO db1.target_table SELECT * FROM db1.source_table;
  • Comprueba el número de filas en la tabla de destino
SELECT COUNT(*) FROM db1.target_table;
┌─count()─┐
│      6  │
└─────────┘
Si quieres modificar la estructura de la nueva tabla, primero puedes mostrar la estructura de la tabla de origen.
SHOW CREATE TABLE db1.source_table;
A continuación, cree la nueva tabla con la estructura modificada. En nuestro caso, queremos añadir una nueva columna population a la tabla de destino.
CREATE TABLE db1.target_table_population
(
    `city` String,
    `country` String,
    `continent` String,
    `population` UInt16,
)
ENGINE = MergeTree
ORDER BY continent;
  • Inserta todas las filas de la tabla de origen en la tabla de destino, incluida la nueva columna. El campo population queda establecido en 0 en todas las filas.
INSERT INTO db1.target_table_population (city, country, continent, population)
SELECT city, country, continent, 0 FROM db1.source_table;
  • Comprueba los datos de la tabla de destino
SELECT * FROM db1.target_table_population LIMIT 3;
┌─city──────┬─country───┬─continent──────┬─population─┐
│ New York  │ USA       │ North America  │          0 │
│ Tokyo     │ Japan     │ Asia           │          0 │
│ Berlin    │ Germany   │ Europe         │          0 │
└───────────┴───────────┴────────────────┴────────────┘
Última modificación el 10 de junio de 2026