Randomiser le resultat d'une requete postgresql

Bon ce n’est pas optimal mais j’ai X pc X etant un nombre aléatoire, et tout ont la meme db qui doit etre mis dans un pc Y avec un orm precis.

Ce que je veux faire meme si ce n’est pas optimal c’est que sur les X pcs je fasse une requete select * qui me sortent toute les entrées de la db mais dans un ordre aleatoire.

Comme ca apres je les met dans le pcs Y en checkant si ca n’existe pas.

Ma requete en postgres est la suivante :

cursor.execute(""" select uid,national_identifier,first,last,mother_first,father_first,gender,birth_city,date_of_birth,id_registration_city,id_registration_district,address_city,address_district,address_neighborhood,street_address,door_or_entrance_number,misc from "citizen" """)

Voila le nombre de pc que j’ai de dispo varie d’un jour a l’autre et est aleatoire. et j’ai 41 millions d’entreée a traiter grosso merdo.

Donc si quelqu’un a une idée de comment randomiser la requete :confused:

(sachant que oui normalement il faudrait faire sur le pc 1 de 1 a X puis sur le pc 2 de 1 a X+1, mais de un je n’ai pas forcement acces tout le temps aux pcs et vu que leur nombre est aleatoire :/)

Et que c’est pour ma curiosité personnelle.

voila
merci :slight_smile:

En gros, la fonction random est ton amie.

Perso, je pense que select * from table order by random() va faire exactement ce que tu veux.

1 « J'aime »

merci beaucoup :slight_smile:

Moi dans ton cas, je traiterait tes lignes par paquets : tu prends un compteur qui mettons va de 0 à 99, ensuite chaque process va incrémenter le compteur et lancer la requête en récupérant les lignes dont l’ID modulo 100 vaut le compteur.

select * from table order by random() limit 1000, quoi :slight_smile: