Cargar datos desde fuentes externas es como invitar colegas a un proyecto. Quieres asegurarte de que todos llegan con la actitud correcta — o, en nuestro caso, en el formato correcto. Incluso un pequeño error en el archivo que cargas puede llevarte a horas de debug, resultados raros en las consultas o simplemente estropear los datos de la tabla.
A veces en el archivo se cuelan líneas vacías, espacios de más, duplicados o, por ejemplo, texto donde debería haber un número. Y si encima la codificación no es la adecuada, la tabla puede negarse a aceptar el archivo.
Para que esto no pase, es importante aprender a comprobar los datos antes de cargarlos — o justo después. Ahora vamos a ver cómo hacerlo.
Comprobación de la estructura de los datos
- Comparar la estructura de la tabla con los datos cargados
El primer paso es asegurarte de que los datos se han cargado según la estructura de tu tabla. Por ejemplo, creaste la tabla students para guardar info sobre estudiantes:
CREATE TABLE students (
student_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
birth_date DATE,
email VARCHAR(100) UNIQUE
);
Si ya cargaste datos en esta tabla, primero vamos a ver qué hay dentro:
SELECT * FROM students;
Las filas devueltas te mostrarán todos los registros de la tabla. Si la estructura de los datos en el archivo CSV no coincide con la estructura de la tabla, verás errores ya en la carga. Pero aunque no haya errores, no significa que los datos estén perfectos.
- Comprobación de tipos de datos
Usa funciones de PostgreSQL para comprobar el contenido de las columnas. Por ejemplo:
Comprobar valores vacíos (NULL):
Si tu tabla tiene campos obligatorios NOT NULL, tienes que asegurarte de que realmente están rellenados. Por ejemplo:
SELECT * FROM students WHERE first_name IS NULL OR last_name IS NULL;
Comprobar formatos de datos:
A veces los datos se cargan como texto aunque deberían ser fechas o números. Para comprobarlo, usa las funciones de PostgreSQL, por ejemplo:
SELECT * FROM students WHERE birth_date::DATE IS NULL;
Esta consulta te muestra las filas donde el campo birth_date no se puede convertir a tipo DATE.
Comprobación de errores
- Buscar duplicados
Los registros duplicados son uno de los problemas más comunes. Supón que tus datos deben ser únicos por dirección de correo (email). Para buscar duplicados, usa esta consulta:
SELECT email, COUNT(*)
FROM students
GROUP BY email
HAVING COUNT(*) > 1;
Esta consulta te muestra todos los email repetidos y cuántas veces aparecen. Si tu columna email está marcada como UNIQUE, cargar estos datos dará error.
- Comprobar datos incorrectos
Si esperas que el campo birth_date contenga solo fechas de nacimiento, tienes que asegurarte de que todos los valores están en un rango válido. Por ejemplo:
SELECT * FROM students
WHERE birth_date < '1900-01-01' OR birth_date > CURRENT_DATE;
Esta consulta muestra las filas donde la fecha de nacimiento es demasiado rara para ser real.
Trabajar con datos incorrectos
Cuando ya encontraste los problemas, hay que arreglarlos. Vamos a ver cómo hacerlo.
- Eliminar datos incorrectos
Si ves que hay filas con nombres vacíos en la tabla, puedes borrarlas:
DELETE FROM students
WHERE first_name IS NULL OR last_name IS NULL;
¡Pero ojo al borrar datos! Puede que sean importantes, así que a veces es mejor actualizarlos en vez de borrarlos.
- Actualizar datos
Si encontraste filas con datos que faltan, puedes actualizarlas usando otras fuentes o suposiciones. Por ejemplo:
UPDATE students
SET email = 'unknown@example.com'
WHERE email IS NULL;
Visualización de datos para análisis
- Usar funciones agregadas
A veces para comprobar los datos viene bien calcular agregados. Por ejemplo, para saber cuántos estudiantes nacieron cada año, haz esto:
SELECT EXTRACT(YEAR FROM birth_date) AS year, COUNT(*)
FROM students
GROUP BY year
ORDER BY year;
Esta consulta te muestra la distribución por años y puede señalar anomalías (por ejemplo, si en un año aparece un grupo de estudiantes sospechosamente grande).
- Comprobar datos con restricciones
Asegúrate de que los datos cumplen las restricciones de la tabla, por ejemplo así:
Comprobar unicidad:
SELECT DISTINCT email
FROM students;
Si el número de valores únicos es menor que el total de filas — tienes duplicados.
Comprobar rangos de valores:
SELECT * FROM students
WHERE LENGTH(first_name) > 50 OR LENGTH(last_name) > 50;
Esto te ayuda a asegurarte de que los nombres de los estudiantes no pasan el límite de 50 caracteres.
¿Qué hacer si todo está fatal?
A veces los datos están tan mal que es más fácil cargarlos de nuevo.
Borra todas las filas de la tabla:
TRUNCATE TABLE students;Arregla el archivo CSV original usando Python, Excel o cualquier otra herramienta.
- Vuelve a cargar los datos usando el comando
COPY.
Aplicación práctica
Las skills de validación de datos te van a servir siempre que trabajes con fuentes externas. En entrevistas, por ejemplo, te pueden pedir que escribas una consulta SQL para comprobar la calidad de los datos entrantes — es lo más normal. En proyectos reales la cosa no es más fácil: los datos del cliente o de otro departamento casi siempre llegan con errores, y tú serás quien los vea primero y pueda arreglarlo antes de que salten bugs.
Comprobar los datos de forma regular ayuda a mantener la base en orden — y no es solo una formalidad, sino un ahorro real de tiempo, nervios y esfuerzo de todo el equipo. Así que si sabes ver rápido si los datos están bien, ya estás un paso más cerca de ser un crack de PostgreSQL.
GO TO FULL VERSION