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