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.
Veamos los datos de la tabla persons
.
Code language: SQL (Structured Query Language) (sql)SELECT*FROMpersons;
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:
Code language: SQL (Structured Query Language) (sql)COPY persons TO 'C:\tmp\persons_db.csv' DELIMITER ',' CSV HEADER;
PostgreSQL exporta todos los datos de todas las columnas de la tabla persons
al archivo persons_db.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_name
last_name
, y email
columnas de la tabla persons
a person_partial_db.csv
Code language: SQL (Structured Query Language) (sql)COPY persons(first_name,last_name,email) TO 'C:\tmp\persons_partial_db.csv' DELIMITER ',' CSV HEADER;
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.
Code language: SQL (Structured Query Language) (sql)COPY persons(email) TO 'C:\tmp\persons_email_db.csv' DELIMITER ',' CSV;
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:
Code language: SQL (Structured Query Language) (sql)\copy (SELECT * FROM persons) to 'C:\tmp\persons_client.csv' with csv
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