PostgreSQL: copiar una tabla

Este artículo se centrará en copiar una tabla existente en una tabla nueva en PostgreSQL. Esto podría ser útil al crear nuevas tablas que tendrían los mismos datos o datos de la misma tabla con ciertas operaciones realizadas en ellos.

Hablaremos de los siguientes 3 casos:

  1. Copiar tabla con la misma estructura y datos.
  2. Copiar tabla con la misma estructura y sin datos.
  3. Copiar Tabla con la misma estructura y datos parciales.

Copiar tabla con la misma estructura y datos

Para copiar una tabla con toda su estructura y datos, utilice la siguiente consulta:

Syntax:
CREATE TABLE new_table AS TABLE old_table;

Ejemplo:

Agreguemos una tabla con las columnas id , first_name , last_name y email a la base de datos:

CREATE TABLE students(
   id SERIAL PRIMARY KEY,
   first_name VARCHAR,
   last_name VARCHAR,
   email VARCHAR UNIQUE
);

Insertemos algunos datos en nuestra tabla de estudiantes :

INSERT INTO students(first_name, last_name, email)
VALUES('Virender', 'Sehwag', 'virender.sehwag@gfg.com'),
    ('Hardik', 'Pandiya', 'hardik.Pandiya@gfg.com');

Ahora revisa los datos en la tabla:

SELECT * FROM students;

Si todo funciona bien, la salida será la siguiente:

Ahora copie la tabla de estudiantes en una nueva tabla llamada tabla copy_students .

CREATE TABLE copy_students AS TABLE students;

La consulta anterior creará una nueva tabla llamada copy_students con la misma estructura y datos que la tabla de estudiantes .

Ahora revisa los datos de la tabla copy_students :

SELECT * FROM copy_students;

Producción:

Copiar tabla con la misma estructura y sin datos

La cláusula SIN DATOS se usa para copiar una estructura de tabla sin los datos usando la siguiente consulta:

Syntax:
CREATE TABLE new_table AS TABLE old_table WITH NO DATA;

Ejemplo:

Usemos la tabla de estudiantes que creamos antes:

CREATE TABLE without_data_students AS TABLE students WITH NO DATA;

Ejecute la consulta anterior para obtener la tabla sin_datos_alumnos con la misma estructura que los alumnos sin datos.

SELECT * FROM without_data_students;

Producción:

Copiar tabla con la misma estructura y datos parciales

La siguiente consulta se puede utilizar para copiar una tabla de acuerdo con una condición específica:

Syntax:
CREATE TABLE new_table AS TABLE old_table WHERE condition;

Ejemplo: 

Insertemos algunas filas más en la tabla de estudiantes :

INSERT INTO students(first_name, last_name, email)
VALUES('Shreyas', 'Iyer', 'shreyas.iyer@gfg.com'),
    ('Rishabh', 'Pant', 'rishabh.pant@gfg.com');

Ahora la tabla de estudiantes tendrá los siguientes datos:

SELECT * FROM students;

Ahora la tabla de estudiantes se verá así:

Vamos a crear una tabla copy_partial_students con id 1 y 3 solamente:

CREATE TABLE copy_partial_students AS SELECT * FROM students WHERE  id IN (1, 3);

En lugar de   * , también puede definir los nombres de las columnas que desea copiar. Las columnas de la tabla de resultados tendrán los mismos nombres y tipos de datos que las columnas de salida de la cláusula SELECT.

Ahora revisa los datos de la tabla copy_partial_students :

SELECT * FROM copy_partial_students;

Producción:

Publicación traducida automáticamente

Artículo escrito por adityapande88 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *