Je travaille depuis peu en télétravail sur des tables assez larges, aux limites d’Excel, que j’exporte en suite sur Mysql pour les traiter en PHP.
J’en suis au million de lignes pour un seul département, et je vais devoir travailler sur une voire sur plusieurs régions, donc un département par onglet et encore
Je suis conscient des limites d’Excel ( 1 048 000 lignes ).
De plus mon matos est très vieux ( Excel 2010, laptop Asus 4 coeurs 4 gigas,Windows 8, etc… ) et je suis obligé de « saucissonner » les fichiers JSON, CSV ou autres pour pouvoir les traiter sans crasher.
Je m’inquiète pour Excel, Microsoft devrait encore sortir une version standalone en 2021 mais je crains que 365 soit la ensuite la règle.
Openoffice max 32 000 lignes, on oublie…
Quel matériel utilisez-vous typiquement pour traiter vos gros fichiers, et quels logiciels ?
Le problème n’est pas le matériel, mais le logiciel utilisé (Excel) qui n’est pas adapté à ce genre d’usage. Les outils bureautique (office and co) ne sont pas conçus pour traiter ces volumétries de données.
Il est temps de passer à autre chose et de sortir des outils
Quels types de traitements sont faits ? La réponse permettra un aiguillage vers quelque chose de plus adapté.
Le processus est le suivant
=> Ouverture fichiers json ou ndjson sous editeur de texte
=> « saucissonage » ( découpe de gros fichiers en plus petits pour qu’EXCEL puisse les ouvrir )
=> Importation dans EXCEL
=> Extraction des données ndjson, json ou CSV sous EXCEL
=> Choix de certaines colonnes
=> calculs ( distance entre 2 points GPS par exemple )
=> sauvegarde finale sous CSV
=> exportation vers base MySQL ( OVH,etc… )
=> interrogations par formulaires HTML / Javascript / PHP / MYSQL
Je fais la totalité moi-même, et cela peut devenir… fastidieux !
Je suis en train de me dire que je pourrais éviter tout cela en programmant un parser PHP de fichiers NDJSON, JSON ou CSV qui écrirait directement dans la base MySQL
Pour le traitement de données volumineuses, si vous l’attaquez avec de la programmation, la question est de savoir si vous pouvez traiter les données en flux (stream), ou si vous devez les monter en mémoire (par exemple pour utiliser les structures comme les dictionnaires).
D’après ce que vous décrivez, un traitement en flux semble possible (les calculs ont l’air d’etre local à la ligne, et en plus vous saucissonnez déjà les données). De plus, les formats ndjson et csv sont particulièrement adapté à des traitements en flux (c’est un peu plus compliqué avec du json mais c’est faisable).
Je ne suis pas expert en php, mais si c’est votre langage de prédilection, il peut être intéressant de regarder ce lien : PHP: Flux - Manual