PostgreSQL renvoie (par défaut) toutes les lignes en une seule fois. Cela a l'avantage de libérer des ressources côté serveur au prix d'ensembles de résultats éventuellement volumineux chez le client.
L'alternative est d'utiliser un curseur qui peut retourner une seule ligne à la fois. Certains pilotes le supportent directement (peut-être PDO ?) ou vous pouvez utiliser DECLARE et FETCH
L'autre chose à savoir est la COPY de PostgreSQL. commande qui peut vider une table ou une requête directement dans un fichier (en supposant que vous n'ayez pas besoin de beaucoup de traitement/formatage). Vérifiez si votre bibliothèque de base de données offre un accès direct.