postgres pg_restore pg_dump password ejemplos create compress postgresql backup gzip compression

postgresql - pg_dump - pg_restore



Exportar a CSV y comprimir con GZIP en postgres (2)

Necesito exportar una tabla grande a un archivo csv y comprimirlo.

Puedo exportarlo usando el comando COPY desde postgres como -

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

Y luego puede comprimirlo usando gzip como -

gzip -c foo_table.csv > foo.gz

El problema con este enfoque es que necesito crear este archivo csv intermedio, que en sí mismo es enorme, antes de obtener mi archivo comprimido final.

¿Hay alguna forma de exportar tablas en csv y comprimir el archivo en un solo paso?

Saludos, Sujit


Ampliando un poco la respuesta de @Joey, a continuación se agrega compatibilidad con 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 la tabla (debe estar sobre usted), necesita /" antes y después del nombre de la tabla.

Lo segundo que he añadido es la lista de columnas.

También nota de los documentos:

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


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

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