Saltar al contenido

Exportar a CSV y Comprimir con GZIP en postgres

Nuestros mejores investigadores agotaron sus reservas de café, buscando día y noche por la solución, hasta que Miriam encontró el arreglo en GitLab y ahora la compartimos aquí.

Solución:

El truco es hacer COPY envíe su salida a stdout, luego canalice la salida a través de gzip:

psql -c "COPY foo_table TO stdout DELIMITER ',' CSV HEADER" 
    | gzip > foo_table.csv.gz

Ampliando un poco la respuesta de @ Joey, a continuación se agrega soporte para un par de funciones más disponibles en el manual.

psql -c "COPY "Foo_table" (column1, column2) TO stdout DELIMITER ',' CSV HEADER" 
    | gzip > foo_table.csv.gz

Si tiene letras mayúsculas en el nombre de su mesa (ay de usted), necesita el " antes y después del nombre de la tabla.

La segunda cosa que he agregado es la lista de columnas.

También tenga en cuenta de los documentos:

Esta operación no es tan eficiente como el comando SQL COPY porque todos los datos deben pasar a través de la conexión cliente/servidor. Para grandes cantidades de datos, el comando SQL puede ser preferible.

Puede usar directamente, según los documentos, https://www.postgresql.org/docs/9.4/sql-copy.html

COPY foo_table to PROGRAM 'gzip > /tmp/foo_table.csv' delimiters',' CSV HEADER;

Recuerda que puedes recomendar esta crónica si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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