Exporter au format CSV et de les Compresser avec GZIP dans postgres
J'ai besoin d'exporter une grande table au format de fichier csv et de les compresser.
Je peux l'exporter à l'aide de la commande COPY de postgres comme -
COPY foo_table to '/tmp/foo_table.csv' delimiters',' CSV HEADER;
Et puis peut le compresser avec gzip comme -
gzip -c foo_table.csv > foo.gz
Le problème avec cette approche est, j'ai besoin de créer cet intermédiaire fichier csv, qui lui-même est énorme, avant que je reçois mon dernier fichier compressé.
Est-il un moyen d'exporter une table au format csv et de compresser le fichier en une seule étape?
Ce qui concerne,
Sujit
- Si il n'a pas nécessairement à être CSV, vous pouvez utiliser pg_dump, comme dans:
pg_dump -Z 5
Vous devez vous connecter pour publier un commentaire.
L'astuce est de faire
COPY
d'envoyer la sortie vers stdout, de rediriger la sortie par gzip:Étendre un peu sur @Joey réponse, ci-dessous ajoute le support pour un couple plus de fonctionnalités disponibles dans le manuel.
Si vous avez des majuscules dans le nom de la table (malheur sur vous), vous avez besoin de la
\"
avant et après le nom de la table.La deuxième chose que j'ai ajouté est la colonne de la liste.
Également note de la documentation: