Utilisez-vous toujours des boucles « for » ou « while » pour parcourir vos lignes et les insérer dans votre base de données ? Écrivez-vous toujours du code séparé pour lire le fichier .csv et le télécharger sur votre base de données MySQL ?
Dites "NON" à la logique linéaire avec l'instruction "LOAD DATA" fournie par MySQL. Préparez-vous à modifier votre code pour à la fois minimiser les lignes et augmenter considérablement les performances.
MySql fournit l'instruction LOAD DATA, qui est un moyen très rapide de lire les données des fichiers texte et de les insérer dans un tableau avec un minimum de code.
Selon la documentation officielle des États MySQL, l'instruction LOAD DATA est utilisée pour lire les données du fichier de manière très rapide et vous pouvez insérer ces données dans votre table avec une seule requête, au lieu d'appuyer sur plusieurs de vos bases de données. fois avec la requête "INSERT INTO".
MySQL fournit également une instruction -> "SELECT…INTO OUTFILE", qui fait exactement le contraire de ce que fait "LOAD DATA", qui consiste à lire les donnéesde la table vers le fichier.
L'utilitaire mysqlimport fourni par MySql appelle en interne l'instruction LOAD DATA sur le serveur pour importer les données.
L'extrait essentiel ci-dessus montre les instructions de données de chargement génériques. Toutes les options disponibles sont mentionnées dans le code ci-dessus.
Concentrons-nous maintenant sur un exemple simple consistant simplement à lire un fichier .csv et à insérer ses lignes dans un tableau compatible.
Un exemple simple :
LOAD DATA INFILE ‘data.csv’ INTO TABLE db.my_table
Un exemple à vol d'oiseau avec toutes les options essentielles :
Inutile de préciser que votre fichier CSV doit être correctement formaté pour que cette déclaration fonctionne ?.
Et voilà, en utilisant l'instruction ci-dessus, votre .csv avec plus de 100 000 lignes sera importé dans votre tableau en quelques secondes.
Maintenant, quelques choses importantes à noter :
L'instruction ci-dessus s'exécute au niveau MySql, donc les fichiers sources sont copiés du client vers le serveur afin de les importer.
Cela soulève des problèmes de sécurité, nous devons nous assurer que la connexion client-serveur est sécurisée lors de l'utilisation de ce code.Dans MySql 8.0, la possibilité d'utiliser LOCAL est définie sur False par défaut. Comme votre serveur et votre client doivent être configurés pour que LOCAL soit autorisé, certains d'entre vous pourraient recevoir une erreur d'autorisation.
En cas d'erreur d'autorisation, nous devons la remplacer en activant lelocal_infile:
SET GLOBAL local_infile = true;
Remarque : le remplacement de cet indicateur n'est pas une solution de sécurité mais plutôt une reconnaissance de l'acceptation des risques, vous pouvez vous référer à cette documentation pour plus d'informations.
L'instruction MySql LOAD DATA est utilisée pour lire les fichiers en très moins de temps.
Vous pouvez utiliser ce code avec n'importe quelle API backend pour fournir le fichier source.
Le fichier source peut être n'importe quel fichier texte, nous avons utilisé .csv dans cet exemple.
LOAD DATA LOCALcopie le fichier source sur votre serveur via MySql, des mesures de sécurité côté serveur doivent donc être mises en œuvre.
mysqlimportl'utilitaire utilise l'instruction LOAD DATA en interne.
Vous pouvez ignorer les en-têtes au format CSV en ajoutantIGNORE 1 LINESdans la déclaration.
Documents officiels
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!