Extraer, transformar y cargar datos de diferentes fuentes y copiarlos en PostgreSQL. Su punto fuerte es que sabe migrar no solo datos, sino también esquemas como tablas, índices y claves foráneas de otras bases de datos y hace transformaciones automáticas o personalizadas.
createdb base_nueva (para migrar una base de datos completa de MySQL a PostgreSQL primero crear la base de datos vacía en PostgreSQL)
$ pgloader mysql://usuario:contraseña@host_mysql:3306/nombre_base postgresql://tu_usuario:tu_pass@localhost:5432/base_nueva
$ pgloader mysql://root@localhost/sakila pgsql:///sakila
$ pgloader --with "include drop, create tables, create indexes, reset sequences" mysql://usuario:pass@mysql-host/dbname pgsql://postgres:pass@localhost/nueva_db
$ pgloader mysql://usuario:pass@host/dbname pgsql://postgres@localhost/nueva_db INCLUDING ONLY TABLE NAMES MATCHING 'clientes', 'pedidos', ~/facturas_.*/ EXCLUDING TABLE NAMES MATCHING ~/temp_.*/
$ pgloader http://datos.gob.es/archivos/ine.zip postgresql:///ine?tabla_poblacion
$ pgloader sqlite:///ruta/a/mi_base.db pgsql:///nueva_base
$ pgloader mssql://sa:TuPass@servidor:1433/CRM postgresql://postgres@localhost/crm_nuevo
1.-
cargar un archivo CSV
$ nano clientes.load
LOAD CSV
FROM 'clientes.csv'
INTO postgresql:///mi_db?clientes
WITH fields terminated by ';',
columns id, nombre, email, fecha_alta DATE format "DD/MM/YYYY"
SET client_encoding to 'latin1',
work_mem to '128MB',
maintenance_work_mem to '512MB';
$ pgloader clientes.load
$ pgloader --type csv --with "fields terminated by ',', header row" --with truncate ./ventas-2025.csv postgresql:///ventas?tabla_ventas
Nota.- pgloader, además de mostrar un resumen final, guarda un log completo por defecto en /tmp/pgloader/.