Ich habe eine MySQL-Tabelle (my_table), die 3 habenSpalten (Name, Alter, Ort). Ich habe eine neue Textdatei (durch die Registerkarte "data.txt" getrennte Datendatei) mit 2 Spalten (Name und Ort). Ich möchte Informationen aus der Datei "data.txt" in my_table mit der Bedingung einfügen, dass der Name identisch ist (in der mysql-Tabelle und in der Textdatei "data.txt"). Aktualisiere die Zeile (füge den Wert in die 3. Spalte ein). Andernfalls erstelle eine neue Zeile ( in welchem Alter wird NULL sein).
if NAME_my_tabe== Name_data.txt --> update this row (do Place_my_tabe = Place_data.txt)
if Name_data.txt not present in my_tabe --> create new row (do Name_my_table=Name_data.txt, Age_my_table=NULL, Place_my_tabe = Place_data.txt)
Wie mache ich das in MySQL ??? (Ich möchte Werte aus einer Textdatei einfügen)
Antworten:
1 für die Antwort № 1Stellen Sie zunächst sicher, dass Ihre Tabelle Folgendes enthält:
- EINZIGARTIG beim Namen
- Alter ist NULLABLE
Die folgende Abfrage wird tun, was Sie brauchen:
INSERT INTO my_table SET name = "Name", place = "Place"
ON DUPLICATE KEY UPDATE place = "New Place"
Mit dem Code zum Lesen Ihrer Datei können Sie Folgendes verwenden:
$file = new SplFileObject("data.txt");
while($file->eof() === true) {
$line = $file->fgets();
$data = explode("t", $line);
// execute query:
$query = sprintf(
"INSERT INTO my_table SET name = "%1$s", place = "%2$s" ON DUPLICATE KEY UPDATE place = "%2$s"",
$data[0], // escape this
$data[1] // escape this
);
}
Beachten Sie, dass Sie diese Abfrage mit Ihrer MySQL-Client-Bibliothek ausführen müssen.