Saltar a contenido

04.-Cargando una tabla con filas

La sentencia INSERT se utiliza para cargar una tabla con filas:

INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

Todos los tipos de datos utilizan formatos de entrada bastante obvios. Las constantes que no son simples valores numéricos generalmente deben estar rodeados de comillas individuales ('), como en el ejemplo. El tipo date es realmente bastante flexible en lo que acepta, pero para este tutorial nos acogeremos al formato inequívoco que se muestra aquí.

El tipo point requiere un par de coordenadas como entrada, como se muestra aquí:

INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');

La sintaxis utilizada hasta ahora requiere recordar el orden de las columnas. Una sintaxis alternativa permite enumerar las columnas explícitamente:

INSERT INTO weather (city, temp_lo, temp_hi, prcp, date)
    VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29');

Puedes listar las columnas en un orden diferente si deseas o incluso omite algunas columnas, por ejemplo, si se desconoce la precipitación:

INSERT INTO tiempo (date, city, temp_hi, temp_lo)
    VALUES ('1994-11-29', 'Hayward', 54, 37);

Muchos desarrolladores consideran que enumerar explícitamente las columnas es más estiloso que confiar en el orden implícitamente.

Introduzcamos todos los comandos mostrados anteriormente para que tener algunos datos con los que trabajar en las secciones siguientes.

También se puede usar COPY para cargar grandes cantidades de datos de archivos de texto plano. Esto suele ser más rápido porque el comando COPY está optimizado para esta aplicación, aunque permitiendo menos flexibilidad que INSERT. Un ejemplo sería:

COPY weather FROM '/home/user/weather.txt';

donde el nombre del archivo para el archivo fuente debe estar disponible en la máquina que ejecuta el proceso de backend, no en el cliente, ya que el proceso de backend lee el archivo directamente. Puedes leer más sobre el comando COPY en COPY.

Ejercicios

  1. Inserta 5 registros de prueba en la tabla employees con diferentes valores para cada columna.
INSERT INTO employees (id, first_name, last_name, email, hire_date)
VALUES (1, 'Juan', 'Perez', 'jperez@mail.com', '2022-01-05'),
       (2, 'Maria', 'Garcia', 'mgarcia@mail.com', '2021-05-15'),
       (3, 'Pedro', 'Gomez', 'pgomez@mail.com', '2020-08-22'),
       (4, 'Luisa', 'Fernandez', 'lufe@mail.com', '2023-02-01'),
       (5, 'Pablo', 'Morales', 'pmorales@mail.com', '2019-12-15');
  1. Inserta 10 registros de prueba en la tabla products con precios entre 5 y 100 y stock entre 10 y 50 unidades a partir de un fichero de texto.