J'ai trouvé une bonne réponse ici :Suivre la progression d'une instruction de mise à jour
L'astuce consiste à créer d'abord une séquence (nommez-la comme vous le souhaitez) :
CREATE SEQUENCE query_progress START 1;
Ajoutez ensuite à la partie WHERE de votre requête :
AND NEXTVAL('query_progress')!=0
Vous pouvez maintenant interroger la progression :
SELECT NEXTVAL('query_progress');
Enfin n'oubliez pas de vous débarrasser de la séquence :
DROP SEQUENCE query_progress;
Notez que cela rendra probablement votre requête encore plus lente et chaque fois que vous vérifierez la progression, la valeur augmentera en plus. Le lien ci-dessus suggérait de créer une séquence temporaire mais PostgreSQL ne semble pas les rendre visibles d'une session à l'autre.