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ó.