Contenido del curso
Primeros Pasos con Bases de Datos
Consultas y Manipulación de Datos
Relaciones y Modelado de Datos
Funciones, Operaciones y Vistas
- 18

Fechas y horas en SQL: current_timestamp y función extract
04:55 min - 19

Calcular días entre fechas con EPOCH en SQL
05:48 min - 20

Cómo unir columnas de texto con CONCAT en SQL
03:50 min - 21

Sentencias UPDATE y DELETE en PostgreSQL
05:54 min - 22

Operadores NULLIF y COALESCE para gestionar datos nulos en SQL
07:29 min - 23

Vistas y funciones reutilizables en pgAdmin
08:09 min
Integraciones
- 24

Importar CSV a PostgreSQL con COPY
Viendo ahora - 25

Configura Jupyter Notebooks con PostgreSQL
04:58 min - 26

Consultas SQL de PostgreSQL en Jupyter
04:56 min - 27

Diferencias entre Postgres y MySQL para elegir la base de datos correcta
03:07 min - 28

Tipos de datos únicos en PostgreSQL: JSON B, arrays y UUID
03:12 min - 29

Importancia de Postgres en el desarrollo profesional de software
01:54 min
Importar CSV a PostgreSQL con COPY
Resumen
Importar datos desde Excel a PostgreSQL es una tarea común cuando trabajas con bases de datos heredadas. La clave está en convertir el archivo a formato CSV y usar la sentencia COPY dentro de pgAdmin para cargarlo en la tabla destino sin perder integridad.
Por qué exportar de Excel a CSV antes de cargar a Postgres
Muchas empresas todavía guardan sus bases en Excel, y al intentar moverlas a un entorno SQL aparece un problema natural de incompatibilidad. La solución es simple: exportar el archivo de Excel a un formato separado por comas, conocido como CSV, que sí puede leer Postgres directamente.
Una vez tienes el CSV con las mismas columnas que tu tabla destino, puedes importarlo sin mayores complicaciones. En el ejemplo de la clase [00:35], el archivo replica los campos de la tabla customer: customer_id, store_id, first_name, last_name, correo electrónico e ID de dirección.
¿Qué es un archivo CSV? Es un archivo de texto plano donde cada valor está separado por comas y cada fila representa un registro. Postgres lo lee de forma nativa con la sentencia
COPY.
Cómo usar la sentencia COPY para importar datos
La sentencia COPY es el atajo oficial de Postgres para mover datos entre archivos y tablas. Su estructura básica indica la tabla destino, la ruta del archivo, el delimitador y el formato.
En la clase [01:30] se muestra la sintaxis aplicada a la tabla customer:
sql COPY customer(customer_id, store_id, first_name, last_name, email, address_id) FROM 'C:\data.csv' DELIMITER ',' CSV HEADER;
Algunos detalles importantes sobre cada parte:
- La ruta debe apuntar al lugar real donde guardaste el archivo, por ejemplo
C:\users\admin\documentos\data.csv. - El operador
DELIMITERle dice a Postgres cómo separar los campos. - La cláusula
CSV HEADERaclara el formato y que la primera fila contiene los nombres de columna.
Qué hacer cuando aparece el error de permisos del archivo
Al ejecutar COPY desde la ventana de consultas de pgAdmin [02:30], es común recibir un mensaje diciendo que no puede abrir o ubicar el archivo CSV. El mensaje no es muy explícito, pero el motivo real es de permisos: Postgres como servicio no siempre puede leer rutas locales del usuario.
Una salida sería crear un usuario con permisos específicos, pero hacerlo solo para una operación es complicado. La alternativa práctica es usar la herramienta PSQL Tool dentro de pgAdmin, que funciona como una terminal conectada a tu base.
Cómo importar el CSV desde la PSQL Tool de pgAdmin
La PSQL Tool es el icono que abre un workspace tipo terminal [03:20]. Una vez ingresas tu contraseña y seleccionas la base, puedes ejecutar una versión más corta de la sentencia.
sql \copy customer FROM 'C:\data.csv' DELIMITER ',' CSV HEADER;
Aquí no necesitas listar todos los campos porque la herramienta los infiere del header. Hay dos detalles que conviene revisar antes de presionar enter:
- Confirma que estás conectado a la base correcta. Si te aparece un error tipo customer does not exist, probablemente entraste a otra base distinta de
dvdrental. - Asegúrate de que los IDs del CSV no choquen con los existentes. Si la tabla ya tiene 600 registros, usa identificadores como 700 en adelante para evitar duplicados de clave primaria.
¿Cuál es la diferencia entre COPY y \copy?
COPYlo ejecuta el servidor Postgres y necesita permisos sobre la ruta.\copylo ejecuta el cliente desde tu máquina, así que evita el problema de permisos.
Cómo confirmar que la importación funcionó
Después de ejecutar la sentencia, el sistema responde con un mensaje del tipo COPY 5, indicando cuántas filas se cargaron [05:10]. Para verificarlo visualmente, regresa a la ventana de consultas de pgAdmin y corre:
sql SELECT * FROM customer;
Al presionar F5, la tabla pasa de 600 a 605 registros. Esa diferencia confirma que tu CSV se integró correctamente.
Diferencias entre la ventana de consultas y la PSQL Tool
La ventana de consultas de pgAdmin es más visual y cómoda: muestra resultados en formato de tabla y permite ejecutar SELECT * sin problema. La PSQL Tool, en cambio, tiene un comportamiento más estricto y replica el entorno de un script de terminal.
Un ejemplo claro aparece en [06:00]: dentro de la PSQL Tool, escribir SELECT * FROM customer; puede no devolver resultados visibles porque el operador asterisco no se renderiza igual. La solución es consultar campo por campo:
sql SELECT first_name FROM customer;
Esa diferencia te obliga a pensar tus consultas como instrucciones de script, lo cual es útil cuando vas a automatizar tareas o trabajar con bases en producción donde la terminal es la única vía.
¿Has intentado importar tus propios CSV a Postgres? Cuéntame en los comentarios qué errores te han aparecido y cómo los resolviste.