PostgreSQL (de forma predeterminada) devuelve todas las filas de una sola vez. Esto tiene la ventaja de liberar recursos en el lado del servidor a costa de conjuntos de resultados posiblemente grandes en el cliente.
La alternativa es usar un cursor que pueda devolver una sola fila a la vez. Algunos controladores admiten esto directamente (tal vez PDO ?) o puede usar DECLARAR y FETCH
La otra cosa a tener en cuenta es COPY de PostgreSQL comando que puede volcar una tabla o consultar un archivo directamente (asumiendo que no necesita mucho procesamiento/formato). Compruebe si la biblioteca de su base de datos ofrece acceso directo.