Un utilisateur a rencontré des problèmes lors de l'importation de données CSV dans une base de données MySQL et a posé les questions suivantes questions :
1. Valeurs de texte apparaissant sous la forme « 0 » :
Les données sont probablement importées sous forme d'entiers dans la base de données au lieu de chaînes. Assurez-vous que les colonnes de la base de données sont du type correct (par exemple, TEXT ou VARCHAR).
2. Gestion des données citées :
Utilisez la clause OPTIONALLY ENCLOSED BY dans la requête LOAD DATA INFILE pour spécifier le caractère d'enceinte (par exemple, ").
3. Ignorer les lignes d'en-tête :
Ajoutez une clause LINES TERMINATED BY dans la requête et spécifiez le caractère séparateur de ligne (par exemple, n). Ensuite, ignorez manuellement le nombre de lignes initiales souhaité avant d'importer.
. 4. Préservation du format des données :
MySQL stocke les valeurs numériques dans leur format d'origine, sauf indication contraire. Les décimales resteront des décimales dans la base de données.
5. Erreur de dépassement de temps :
Augmentez le paramètre max_execution_time dans la configuration de PHP (par exemple, dans php.ini) pour permettre des temps d'exécution plus longs. Pour les importations volumineuses, envisagez d'utiliser une méthode plus efficace comme LOAD DATA INFILE de MySQL. directement.
Au lieu d'utiliser des boucles PHP pour importer les données, la la fonctionnalité LOAD DATA INFILE de MySQL peut importer directement des fichiers CSV dans des tables avec une seule requête SQL :
$query = <<<'eof' LOAD DATA INFILE '$fileName' INTO TABLE tableName FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' (field1,field2,field3,etc) eof; $db->query($query);
Cette méthode est plus rapide et plus efficace que les boucles d'analyse 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!