/ / mysql update von datei einfügen falls vorhanden sonst update - php, mysql

mysql update von der Datei einfügen wenn vorhanden sonst update - php, mysql

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 № 1

Stellen Sie zunächst sicher, dass Ihre Tabelle Folgendes enthält:

  1. EINZIGARTIG beim Namen
  2. 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.