Disons que vous avez un SELECT id from table
query (le cas réel est une requête complexe) qui vous renvoie plusieurs résultats.
Le problème est de savoir comment obtenir tous les id
retours dans une seule ligne, séparés par des virgules?
SELECT string_agg(id, ',') FROM table
Requiert PostgreSQL 9.0 mais ce n’est pas un problème.
Vous pouvez utiliser les fonctions array () et array_to_string () avec votre requête. Avec SELECT array( SELECT id FROM table );
, vous obtiendrez un résultat du type: {1,2,3,4,5,6}
Ensuite, si vous souhaitez supprimer les signes {}, vous pouvez simplement utiliser la fonction array_to_string () et utiliser une virgule comme séparateur. Ainsi: SELECT array_to_string( array( SELECT id FROM table ), ',' )
obtiendra un résultat du type: 1,2,3,4, 5,6
Vous pouvez générer un fichier CSV à partir de toute requête SQL à l'aide de psql:
$ psql
> \o myfile.csv
> \f ','
> \a
> SELECT col1 AS column1, col2 AS column2 ... FROM ...
Le fichier myfile.csv résultant aura les noms de colonne du jeu de résultats SQL sous forme d'en-têtes de colonne CSV et les tuples de requête sous forme de lignes CSV.
h/t http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv