Exportar una tabla PostgreSQL a un archivo CSV

Resumen: en este tutorial, aprenderá varias técnicas para exportar datos de tablas PostgreSQL a archivos CSV.

En el tutorial anterior, mostramos cómo importar datos de un archivo CSV a una tabla. Utilizaremos la tabla persons que creamos para importar datos desde un archivo CSV.

posgresql export csv

Veamos los datos de la tabla persons.

SELECT*FROMpersons;
Code language: SQL (Structured Query Language) (sql)
posgresql import csv from pgAdmin tool persons table

Tenemos dos registros en la tabla.

Exportar datos de una tabla a CSV utilizando la sentencia COPY

La forma más sencilla de exportar los datos de una tabla a un archivo CSV es utilizar la sentencia COPY. Por ejemplo, si quieres exportar los datos de la tabla persons a un archivo CSV llamado persons_db.csv en la carpeta C:\tmp, puedes utilizar la siguiente sentencia:

COPY persons TO 'C:\tmp\persons_db.csv' DELIMITER ',' CSV HEADER;
Code language: SQL (Structured Query Language) (sql)

PostgreSQL exporta todos los datos de todas las columnas de la tabla persons al archivo persons_db.csv.

postgresql export csv

En algunos casos, quieres exportar los datos de sólo algunas columnas de una tabla a un archivo CSV. Para ello, se especifican los nombres de las columnas junto con el nombre de la tabla después de la palabra clave COPY. Por ejemplo, la siguiente sentencia exporta los datos de las tablas first_namelast_name, y email columnas de la tabla persons a person_partial_db.csv

COPY persons(first_name,last_name,email) TO 'C:\tmp\persons_partial_db.csv' DELIMITER ',' CSV HEADER;
Code language: SQL (Structured Query Language) (sql)
postgresql exportar csv parcialmente

Si no quieres exportar la cabecera, que contiene los nombres de las columnas de la tabla, basta con eliminar la bandera HEADER en la sentencia COPY. La siguiente sentencia exporta sólo los datos de la columna email de la tabla persons a un archivo CSV.

COPY persons(email) TO 'C:\tmp\persons_email_db.csv' DELIMITER ',' CSV;
Code language: SQL (Structured Query Language) (sql)
postgresql exportar csv parcialmente sin cabecera

Tenga en cuenta que el nombre del archivo CSV que especifica en el comando COPY debe ser escrito directamente por el servidor. Esto significa que el archivo CSV debe residir en la máquina del servidor de la base de datos, no en su máquina local. El archivo CSV también debe poder ser escrito por el usuario con el que se ejecuta el servidor PostgreSQL.

Exportar datos de una tabla a un archivo CSV utilizando el comando \copy

En caso de que tenga acceso a un servidor de base de datos PostgreSQL remoto, pero no tenga suficientes privilegios para escribir en un archivo en él, puede utilizar el comando incorporado de PostgreSQL \copy.

El comando \copy básicamente ejecuta la sentencia COPY anterior. Sin embargo, en lugar de que el servidor escriba el archivo CSV, psql escribe el archivo CSV y transfiere los datos del servidor a su sistema de archivos local. Para usar el comando \copy, sólo necesita tener suficientes privilegios en su máquina local. No requiere privilegios de superusuario de PostgreSQL.

Por ejemplo, si quieres exportar todos los datos de la tabla persons en persons_client.csv archivo, puedes ejecutar el comando \copy desde el cliente psql de la siguiente manera:

\copy (SELECT * FROM persons) to 'C:\tmp\persons_client.csv' with csv
Code language: SQL (Structured Query Language) (sql)

En este tutorial, hemos mostrado cómo utilizar la sentencia COPY y el comando \copy para exportar los datos de una tabla a archivos CSV.

  • ¿Ha sido útil este tutorial?
  • SíNo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *