Comment importer efficacement des données CSV dans MySQL à l'aide de PHP et éviter les problèmes courants ?

Patricia Arquette
Libérer: 2024-11-17 12:12:02
original
930 Les gens l'ont consulté

How to Efficiently Import CSV Data into MySQL Using PHP and Avoid Common Issues?

Importation de données CSV à l'aide de PHP et MySQL

Problème et questions

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. Les valeurs du texte importé apparaissent comme "0" dans la base de données.
  2. Comment gérer les données entre guillemets ?
  3. Ignorer les premières lignes d'un fichier CSV contenant des en-têtes.
  4. Conservation du format des données (point décimal) lors de l'import dans la base de données.
  5. Une erreur "temps d'exécution dépassé" s'est produite lors d'un import de données volumineux.

Solution

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.

Solution alternative

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal