Saltar al contenido
DBAExperts
PostgreSQL Migración y datos

Cómo exportar e importar datos en PostgreSQL con COPY

COPY es la forma más rápida de mover datos en bloque entre PostgreSQL y archivos CSV. Es mucho más veloz que insertar fila por fila con INSERT.

  1. 1

    Exporta una tabla a CSV desde el servidor

    COPY TO escribe el archivo en el sistema de archivos del servidor y requiere permisos de superusuario o del rol pg_write_server_files.

    COPY clientes TO '/tmp/clientes.csv' WITH (FORMAT csv, HEADER true);
  2. 2

    Exporta desde el cliente con \copy

    Si no tienes acceso al disco del servidor, \copy de psql escribe el archivo en tu máquina local usando tus permisos de sistema.

    \copy clientes TO 'clientes.csv' WITH (FORMAT csv, HEADER true)
  3. 3

    Importa datos desde un CSV

    COPY FROM carga el archivo en la tabla. La tabla debe existir y las columnas coincidir con el orden del CSV, o especifícalas de forma explícita.

    \copy clientes FROM 'clientes.csv' WITH (FORMAT csv, HEADER true)
  4. 4

    Acelera cargas grandes desactivando índices temporalmente

    En cargas iniciales masivas conviene cargar primero y crear los índices después: mantenerlos durante el COPY hace la carga mucho más lenta.

    -- 1) carga con \copy
    -- 2) luego:
    CREATE INDEX idx_clientes_email ON clientes (email);

// el error común

Confundir COPY (corre en el servidor, necesita superusuario y rutas del servidor) con \copy (corre en el cliente psql, usa rutas locales). Muchos errores de permiso denegado se resuelven cambiando COPY por \copy.

// cuándo conviene un experto

Cuando la importación es parte de una migración con transformación de datos, tipos que no cuadran o millones de filas, el proceso se complica rápido. En dba.mx planeamos la carga con validación y rollback para que los datos lleguen íntegros.

Agenda un Escaneo — desde USD $550

Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.