Inserción de Datos en Repsheet sin Archivos Planos

Clase 25 de 33Curso de AWS Redshift para Manejo de Big Data

Contenido del curso

Cómo diseñar tu base de datos para mejorar su desempeño

Manipular enormes cantidades de datos

Resumen

Cuando no tienes acceso a un bucket de S3 ni dispones de archivos planos, el comando Copy deja de ser una opción viable para cargar datos en Amazon Redshift. Sin embargo, existen métodos alternativos que, aunque no alcanzan la eficiencia del Copy, permiten poblar tus tablas sin consumir recursos excesivos. Conocer estas técnicas te da flexibilidad para resolver escenarios reales donde la fuente de datos no se ajusta al flujo ideal.

¿Cómo insertar múltiples filas con un solo INSERT en Redshift?

El INSERT funciona en Redshift igual que en una base de datos transaccional, pero con una restricción fundamental: nunca debes ejecutar un insert por cada fila individual. Hacer inserciones fila por fila destruye el rendimiento de bases de datos orientadas a columnas, al punto de que pueden dejar de responder [01:17].

La práctica correcta es realizar inserciones por lotes dentro de una sola instrucción. La sintaxis agrupa varios conjuntos de valores separados por comas:

sql INSERT INTO estudiante VALUES (5, 'Brandon', 'Huertas', 24, '2020-01-01'), (6, 'Cristian', 'Salas', 30, '2020-01-01'), (7, 'Holman', 'Campos', 30, '2020-01-01'), (8, 'Natalia', 'Montenegro', 30, '2020-01-01');

De esta manera, Redshift aprovecha mejor su capacidad de multiproceso y procesa toda la carga como una sola tarea [02:24]. Aunque el ejemplo utiliza pocos registros, el principio aplica para volúmenes mayores:

  • Agrupa tus datos en un único INSERT con múltiples valores.
  • Evita ejecutar un INSERT por cada registro.
  • Recuerda que este método es viable cuando no tienes archivos planos ni acceso al bucket.

¿Qué es el bulk select insert y cuándo conviene usarlo?

El bulk select insert es una técnica que permite poblar una tabla nueva a partir de datos que ya existen dentro de Redshift. Resulta un poco paradójico porque requiere que los datos ya estén cargados, pero es extremadamente útil para crear tablas orientadas a analítica [03:04].

Su funcionamiento combina un CREATE TABLE con un query que resuelve joins, funciones de agrupamiento y transformaciones:

sql CREATE TABLE total_price_by_event AS SELECT e.eventname, e.starttime, SUM(s.pricepaid) AS price_paid, SUM(s.commission) AS commission FROM sales s INNER JOIN event e ON s.eventid = e.eventid GROUP BY e.eventname, e.starttime;

Este proceso es bastante rápido porque Redshift utiliza su arquitectura paralelizada para resolver el query e insertar los resultados en una sola operación [04:25]. El resultado es una tabla consolidada donde, por ejemplo, puedes ver por cada evento cuándo empezó, cuánto recaudó por precio y por comisión.

¿Qué ventajas ofrece el deep copy en Redshift?

El deep copy es una estrategia que combina varias instrucciones para reemplazar una tabla sin que los usuarios noten el cambio. El flujo completo sigue estos pasos [05:05]:

  • Crear una tabla espejo con la misma estructura usando CREATE TABLE like_sales (LIKE sales).
  • Copiar los datos con INSERT INTO like_sales SELECT * FROM sales.
  • Eliminar la tabla original con DROP TABLE sales.
  • Renombrar la tabla espejo con ALTER TABLE like_sales RENAME TO sales.

Este patrón es especialmente poderoso cuando necesitas optimizar el esquema de una tabla existente. Puedes cargar los datos crudos, analizar la compresión, crear una nueva tabla con mejores configuraciones, trasladar los datos y renombrarla. Para los usuarios finales, la tabla sales sigue existiendo como si nada hubiera cambiado [05:50].

Todo el proceso aprovecha el paralelismo de Redshift, lo que lo hace rápido y efectivo.

¿Cuál es la mejor práctica para cargar datos?

Siempre que sea posible, el comando Copy sigue siendo la opción superior. Las alternativas que vimos son válidas y resuelven escenarios específicos:

  • INSERT por lotes: cuando no tienes archivos planos ni acceso a S3.
  • Bulk select insert: cuando necesitas crear tablas analíticas a partir de datos existentes.
  • Deep copy: cuando requieres reestructurar o mejorar la configuración de una tabla sin afectar a los consumidores.

Si tienes dudas sobre tiempos de carga, parámetros adicionales del Copy o cualquiera de estos métodos, comparte tus preguntas en los comentarios.