Comment faire pour importer énorme fichier CSV avec 200,00 lignes de MySQL (asynchrone et rapide)?

Je dois écrire un script PHP qui va importer des données à partir d'un fichier CSV en base de données MySQL. Le fichier CSV peut contenir jusqu'à 200 000 lignes.
J'ai essayé ce qui suit, mais des problèmes se posent :

  1. LOAD DATA LOCAL INFILE : je ne peux pas utiliser LOAD DATA LOCAL INFILE déclaration parce que je voulais faire un peu de validations d'abord AVANT de télécharger les lignes, aussi, notre DB admin ne veut pas me servir de cette déclaration, et je ne sais pas pourquoi.
  2. POUR la BOUCLE : l'Insertion d'une ligne par ligne à l'intérieur DE la boucle va prendre trop de temps d'attente de la Connexion.

Maintenant, je pense à une solution par le fractionnement du fichier CSV en petits morceaux, puis de les insérer de manière asynchrone. Je me suis déjà fait avec le fractionnement du CSV, mais je n'ai actuellement aucune idée de comment de façon asynchrone insérer dans ma base de données de façon rapide et sécuritaire. Mais j'ai entendu dire que je serai à l'aide d'Ajax ici.

Toute solution que vous pouvez recommander? Merci beaucoup à l'avance!

Vous pouvez faire des validations avec LOAD DATA LOCAL INFILE, il suffit de créer un trigger sur la table dans laquelle vous ne l'importation et de laisser le déclencheur de faire les validations.
200k lignes est minuscule pour load data local infile, on dirait que le chemin à parcourir. Vous pouvez également faire des validations avant et ré-écrire le fichier avant de l'importer.
Je comprends que LOAD DATA LOCAL INFILE est la meilleure façon d'aller. Si c'est juste mes critères, je voudrais le faire de cette façon. Mais je suis chargé de le faire de manière asynchrone. Aussi, je n'ai pas accès à la modification de notre base de données. Vraiment, mon boss m'a demandé d'écrire un script PHP qui se charge de ces lignes dans des bases de données MySQL. Quelle est la meilleure façon suivante pour LOAD DATA LOCAL INFILE?
Pourquoi est-ce que votre patron vous demandant de le faire via PHP? Semble comme il devrait être quelque chose comme MySQL Workbench, avec de nombreux records.

OriginalL'auteur Mead Umandal | 2015-09-10