Lors de l'importation de fichiers CSV dans des bases de données MySQL à l'aide de PHP, vous rencontrez souvent des problèmes de format de données, des clés en double, de la troncature des données et d'autres avertissements. Ces avertissements ne provoquent pas directement des échecs d'importation, mais affecteront l'intégrité et l'exactitude des données. Afin de saisir avec précision les problèmes potentiels qui surviennent pendant le processus d'importation, la fonction MySQLI :: Get_Warnings est devenue un outil important pour dépanner et optimiser le processus d'importation.
MySQLI :: Get_Warnings est une méthode de la classe MySQLI en PHP qui est utilisée pour obtenir des informations d'avertissement générées par la dernière opération de base de données. Il renvoie une chaîne d'objets d'avertissement à travers lesquels nous pouvons lire et analyser les avertissements générés lors de l'exécution de la base de données, tels que la troncature des données, la défaillance de la contrainte de clé étrangère, etc.
Dans le scénario d'importation de CSV, ces messages d'avertissement peuvent nous aider à localiser les lignes de problème, ajuster le fichier CSV ou la structure de la base de données dans le temps et à éviter les exceptions de données.
Lisez le contenu du fichier CSV.
Analyse chaque rangée de données.
Utilisez Insert ou Charge Data Infile pour écrire des données dans la base de données.
Appelez MySqli :: Get_Warnings pour obtenir des avertissements pendant l'exécution.
Effectuez le traitement ou les journaux correspondants en fonction des résultats d'avertissement.
L'exemple suivant montre comment importer du CSV avec PHP et utiliser Get_Warnings pour obtenir des avertissements à l'aide de PHP.
<?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
if ($mysqli->connect_errno) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
$csvFile = fopen("data.csv", "r");
if (!$csvFile) {
die("Impossible d'ouvrir CSV document");
}
$lineNumber = 0;
while (($data = fgetcsv($csvFile)) !== false) {
$lineNumber++;
// Hypothèses CSV Il y a trois colonnes: id, name, email
$id = $mysqli->real_escape_string($data[0]);
$name = $mysqli->real_escape_string($data[1]);
$email = $mysqli->real_escape_string($data[2]);
$sql = "INSERT INTO users (id, name, email) VALUES ('$id', '$name', '$email')";
if (!$mysqli->query($sql)) {
echo "1 et 1 $lineNumber L'insertion de ligne a échoué: " . $mysqli->error . "\n";
} else {
// Obtenir des informations d'avertissement
if ($mysqli->warning_count > 0) {
$warning = $mysqli->get_warnings();
while ($warning) {
echo "1 et 1 $lineNumber Avertissement: ({$warning->errno}) {$warning->message}\n";
$warning = $warning->next();
}
}
}
}
fclose($csvFile);
$mysqli->close();
?>
Données tronquées pour la colonne
Cela indique que la longueur des données importée dépasse la longueur du champ, ce qui peut entraîner le tronqué des données. Il est recommandé de vérifier si la longueur de champ correspondante de CSV ou le type de champ de base de données est raisonnable.
Entrée en double
Les données importées violent les contraintes d'unicité et peuvent être des conflits d'index principaux ou des conflits d'index unique. Les données en double doivent être vérifiées et traitées.
Valeur de DateTime incorrecte
Le format de date de date est incorrect, ce qui entraîne l'échec ou l'exception de l'insertion. Vérifiez le format de champ correspondant dans CSV pour vous assurer qu'il est conforme aux exigences MySQL.
Avec MySQLI :: Get_Warnings , nous pouvons capturer et produire des informations d'avertissement potentielles en temps réel lors de l'importation de CSV, réalisant ainsi un diagnostic d'erreur plus détaillé et un contrôle de la qualité des données. Cela améliore non seulement la stabilité de l'importation de données, mais facilite également le nettoyage et la correction des données ultérieures.
En gérant correctement ces avertissements, assurer l'intégrité et la précision des données importées est une étape clé pour améliorer la fiabilité des données du système.