Beim Importieren von CSV -Dateien in MySQL -Datenbanken mit PHP stoßen Sie häufig auf einige Datenformatprobleme, doppelte Schlüssel, Datenkürzung und andere Warnungen. Diese Warnungen verursachen keine direkten Importfehler, sondern wirken sich auf die Integrität und Korrektheit der Daten aus. Um die potenziellen Probleme, die während des Importprozesses auftreten, genau zu erfassen, ist die Funktion von MySQLI :: get_warnings zu einem wichtigen Instrument zur Fehlerbehebung und Optimierung des Importprozesses geworden.
Mysqli :: get_warnings ist eine Methode in der MySQLI -Klasse in PHP, mit der Warninformationen erhalten werden, die durch den neuesten Datenbankvorgang generiert werden. Es gibt eine Kette von Warnobjekten zurück, durch die wir Warnungen lesen und analysieren können, die während der Datenbankausführung generiert werden, z. B. Datenverschmutzung, Ausfall des Fremdschlüsselbeschränkung usw.
Im Szenario des Imports von CSV können diese Warnmeldungen uns helfen, Problemzeilen zu lokalisieren, die CSV -Datei oder die Datenbankstruktur rechtzeitig anzupassen und Datenausnahmen zu vermeiden.
Lesen Sie den Inhalt der CSV -Datei.
Parsen jede Datenzeile.
Verwenden Sie Einfügen oder laden Sie Daten infile, um Daten in die Datenbank zu schreiben.
Rufen Sie MySQLI :: get_warnings an, um während der Ausführung Warnungen zu erhalten.
Führen Sie die entsprechenden Verarbeitungs- oder Protokolle basierend auf den Warnergebnissen durch.
Das folgende Beispiel zeigt, wie CSV mit PHP importiert wird und Get_Warnings verwendet, um Warnungen mit PHP zu erhalten.
<?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
if ($mysqli->connect_errno) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
$csvFile = fopen("data.csv", "r");
if (!$csvFile) {
die("Nicht öffnen können CSV dokumentieren");
}
$lineNumber = 0;
while (($data = fgetcsv($csvFile)) !== false) {
$lineNumber++;
// Annahmen CSV Es gibt drei Spalten: 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. $lineNumber Linieninsertion fehlgeschlagen: " . $mysqli->error . "\n";
} else {
// Warninformationen erhalten
if ($mysqli->warning_count > 0) {
$warning = $mysqli->get_warnings();
while ($warning) {
echo "1. $lineNumber Warnung: ({$warning->errno}) {$warning->message}\n";
$warning = $warning->next();
}
}
}
}
fclose($csvFile);
$mysqli->close();
?>
Daten für die Spalte abgeschnitten
Dies zeigt an, dass die importierte Datenlänge die Feldlänge überschreitet, was dazu führen kann, dass die Daten abgeschnitten werden. Es wird empfohlen, zu überprüfen, ob die entsprechende Feldlänge von CSV oder der Datenbankfeldtyp angemessen ist.
Doppelter Eintrag
Die importierten Daten verstoßen gegen Einzigartigkeitsbeschränkungen und können Primärschlüssel oder eindeutige Indexkonflikte sein. Doppelte Daten müssen überprüft und verarbeitet werden.
Falsches DateTime -Wert
Das Datumszeitformat ist falsch, was zum Einfügen oder Ausnahme des Einfügungsfehlers führt. Überprüfen Sie das entsprechende Feldformat in CSV, um sicherzustellen, dass es den MySQL -Anforderungen entspricht.
Mit MySQLI :: get_warnings können wir während des Imports von CSV potenzielle Warninformationen in Echtzeit erfassen und ausgeben, wodurch detailliertere Fehlerdiagnose und Datenqualitätskontrolle erreicht werden. Dies verbessert nicht nur die Stabilität des Datenimports, sondern erleichtert auch die nachfolgende Datenreinigung und Korrektur.
Durch die ordnungsgemäße Umstellung dieser Warnungen ist die Gewährleistung der Integrität und Genauigkeit importierter Daten ein wesentlicher Schritt zur Verbesserung der Zuverlässigkeit von Systemdaten.