67 votes

Comment imprimer le résultat d’une requête PostgreSQL au format CSV ou TSV à partir de la ligne de commande ?

J’aimerais exécuter une requête à partir du shell (pas dans le client psql interactif) et lui demander d’imprimer la représentation CSV ou TSV de la sortie sur STDOUT. Comment faites-vous cela avec `` ou l’un des outils de ligne de commande PostgreSQL?

117voto

Matthew Wood Points 4485

Si vous utilisez PostgreSQL 8.2 ou une version plus récente, utilisez ceci pour CSV :

et ceci de TSV, avec des NULL appropriés:

Le formulaire CSV cite correctement tous les champs qui contiennent le caractère de guillemet double. Consultez la documentation PostgreSQL de votre version spécifique pour plus de détails et d’options pour COPY.

42voto

Jason McVetta Points 326

En partant de la réponse de Bohemian, j’ai trouvé ces drapeaux utiles:

  • Mode de sortie non aligné: -A
  • Utilisez une virgule comme délimiteur de champ : -F ,
  • Ne lisez pas psqlrc : -X
  • Tuples uniquement (pas d’en-tête/pied de page) : -t
  • Fichier contenant une requête SQL : -f
  • Fichier de sortie: -o

8voto

Bohemian Points 134107

EDITED: Utilisation de -F

Utilisez des virgules via et utilisez le « mode de sortie de table non alignée » :

6voto

ConKat Points 51

Pour spécifier un tsv, utilisez le délimiteur '\t'

Pour spécifier un fichier csv, utilisez le délimiteur ','

4voto

Gavin Points 1797

La commande copy qui vous permet de spécifier les options d’en-tête, de délimiteurs et de devis est également possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X