es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Clonar tabla con datos parciales y toda la estructura.

Estoy tratando de clonar una tabla en SQL con datos parciales pero manteniendo toda la estructura (índices, etc). Este es el código que estoy intentando ejecutar:

CREATE TABLE "nueva tabla" (LIKE "vieja tabla")

INSERT INTO "nueva tabla"
    SELECT *
    FROM "vieja tabla"
    WHERE "columna de fecha" > ('now'::text::date - '1 year'::interval)

El mensaje de error dice que el comando INSERT está mal. Cuando solo lo ejecuto con LIKE, funciona, pero cuando trato de ingresar los datos, no funciona.

Además, la función WHERE también está funcionando correctamente.

Además, cuando uso CREATE TABLE "" AS, funciona y trae solo los datos sin la estructura. Cuando uso LIKE, funciona y trae la estructura sin datos. Pero, cuando intento traer tanto los datos como la estructura, no funciona y esa es mi pregunta.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que la sintaxis para crear una tabla e insertar datos con la cláusula LIKE no es correcta. Aquí está la sintaxis correcta para clonar una tabla con datos parciales:

    CREATE TABLE "nueva tabla" (LIKE "vieja tabla" INCLUDING ALL);
    
    INSERT INTO "nueva tabla"
        SELECT *
        FROM "vieja tabla"
        WHERE "columna de fecha" > (NOW() - INTERVAL '1 year');
    

    La razón del error es que la cláusula LIKE solo crea la estructura de la nueva tabla basada en la tabla antigua, y no copia ningún dato. Para insertar datos en la nueva tabla, se requiere una declaración INSERT INTO separada. Además, la opción INCLUDING ALL en la declaración CREATE TABLE asegura que todas las restricciones, índices y disparadores se copien a la nueva tabla.

    Además, la función NOW() se puede utilizar para obtener la fecha y hora actual en SQL, y la palabra clave INTERVAL se puede utilizar para restar una cierta cantidad de tiempo a la fecha actual.

    Por lo tanto, la sintaxis correcta para clonar una tabla con datos parciales y toda la estructura se muestra arriba.

Comments are closed.