Maison > Questions et réponses > le corps du texte
Utilisez Laravel Excel pour importer l'Excel de l'utilisateur
On peut s'attendre à ce qu'un Excel contienne des milliers, voire des dizaines de milliers d'entrées.
Il faut juger de ne pas importer d'utilisateurs en double. Par exemple, si 10 000 personnes sont importées et qu'il y a déjà 100 personnes dans la base de données, alors ces 100 personnes doivent être jugées et un traitement logique supplémentaire est effectué. 9 900 autres personnes ont été importées. Et il enregistre 9 900 statuts d’insertion, tels que 8 000 réussites et 1 900 échecs. Je réfléchis à plusieurs solutions et je ne sais pas laquelle est la plus raisonnable
1. La méthode traditionnelle d'insertion par lots ne peut pas déterminer avec précision si chaque élément de données est répété ou enregistrer l'état du retour. Mais l'efficacité devrait être relativement élevée.
2. Utilisez une boucle for pour interroger avant l'insertion, puis enregistrez l'état après l'insertion, à partir de la logique métier, cela répond le mieux aux besoins, mais l'efficacité est très faible. On estime que 500 erreurs ou délais d'attente se produiront facilement. .
3. Améliorez sur la base de 2. Écrivez l'ensemble du processus dans la file d'attente, regroupez les morceaux dans la file d'attente, puis traitez-le en arrière-plan. L'inconvénient est que l'expérience utilisateur est relativement médiocre et ne peut pas être obtenue immédiatement. Il faut également coopérer avec le système de notification pour ce faire.
4. Après vérification, il existe une autre façon d'utiliser les transactions pour valider en blocs. Je ne sais pas comment cela fonctionne et je ne l'ai pas encore testé. Merci de me donner également vos conseils.
Je ne sais pas si vous avez de meilleures idées. Il peut équilibrer efficacité et logique. Merci
过去多啦不再A梦2017-05-16 13:00:18
En regardant le sens de la question, je comprends qu'il s'agit de
1 Téléchargement Excel
2 Analyse, stockage Excel
3.Renvoyer les données à l'utilisateur
L'ensemble du processus devrait prendre beaucoup de temps. Vous pouvez donner à l'utilisateur le statut de [Traitement], le traiter en arrière-plan et afficher le résultat une fois qu'il est complètement traité.
Quant à juger s'il y a des utilisateurs en double et à enregistrer l'état de réussite et d'échec, vous pouvez d'abord envisager de l'enregistrer sur Redis, ce qui sera plus rapide, et enfin tous les résultats seront stockés dans la base de données pour traitement
大家讲道理2017-05-16 13:00:18
Dites-moi ce que je pense, ne commentez pas si vous n'aimez pas.
Supposons que l'identifiant unique dans la base de données et Excel soit le numéro d'identification de l'utilisateur :
Vérifiez le numéro d'identification existant dans la base de données,
Une fois Excel téléchargé, il parcourt chaque ligne et détermine si le numéro d'identification de la donnée actuelle se trouve dans le tableau de la base de données
S'il n'y est pas, écrivez-le dans la base de données et ajoutez le numéro d'identification au tableau trouvé,
Si oui, sautez
Dans mon environnement en ligne, je télécharge un fichier Excel contenant plus de 50 000 lignes à la fois, et le temps d'attente n'est que d'environ 6 secondes.
Bien sûr, le nombre de lignes et de colonnes simples dans chaque environnement en ligne et fichier Excel est différent,
Ceci est uniquement à titre de référence pour l'affiche.