Cette question aborde plusieurs défis rencontrés lors de l'importation de données CSV dans une base de données MySQL à l'aide de PHP.
Le code fourni télécharge efficacement le fichier CSV et affiche son contenu. Cependant, il est confronté à des problèmes avec les données texte affichées à 0 dans la base de données et à la possibilité que des guillemets entourent les données importées.
1. Champs de texte s'affichant sous la forme 0
Pour résoudre ce problème, vérifiez l'encodage de votre fichier CSV. Assurez-vous qu'il s'agit d'UTF-8, qui prend en charge à la fois les données textuelles et numériques. De plus, vérifiez que les colonnes de votre table de base de données sont correctement définies pour accepter les données texte.
2. Données citées
Les citations peuvent contenir des données dans des fichiers CSV. Si vous rencontrez ce problème, vous pouvez utiliser mysql_real_escape_string pour nettoyer les données avant de les insérer dans la base de données. Cette fonction échappe aux caractères spéciaux, y compris les guillemets, pour empêcher les attaques par injection SQL.
3. Ignorer les lignes d'en-tête
Pour ignorer les X premières lignes de votre fichier CSV, qui peuvent contenir des en-têtes, utilisez fseek et fgetc pour avancer manuellement dans le fichier avant de démarrer le processus d'importation.
4. Format des données
Le format des données doit rester le même tout au long du processus d'importation. Les valeurs numériques, y compris les décimales, seront conservées dans leur format d'origine. Cependant, il est important de noter que MySQL possède des types de données spécifiques pour différents formats (par exemple, décimal, float, etc.), il est donc crucial de définir les colonnes de votre base de données en conséquence.
5. Problème de performances
L'"Erreur fatale" signalée indique que le délai d'exécution de PHP (30 secondes) a été dépassé. Ceci est courant lors de l’importation de grands ensembles de données. Pour résoudre ce problème, vous pouvez augmenter le paramètre max_execution_time dans votre fichier de configuration PHP (php.ini) ou implémenter un mécanisme d'importation fragmenté pour traiter les données en portions plus petites sur plusieurs requêtes.
Méthode alternative
Comme suggéré dans la réponse, vous pouvez envisager d'utiliser la fonctionnalité LOAD DATA INFILE de MySQL. Cela vous permet d'importer des données CSV directement à l'aide d'une seule requête SQL, améliorant ainsi les performances et éliminant le besoin de boucles de traitement PHP.
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!