Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   mysql INSERT INTO / Duplicates (https://www.delphipraxis.net/92004-mysql-insert-into-duplicates.html)

toms 13. Mai 2007 09:35


mysql INSERT INTO / Duplicates
 
Hallo

Ich importiere in eine Tabelle die Daten einer Txt Datei.
Wie kann ich am einfachsten überprüfen, ob ein User schon in der Tabelle existiert und
wenn das der Fall ist, nicht nochmals hinzufügen?


Code:
$db = mysql_connect($sql_db,$sql_id,$sql_pwd);
$db_ok = mysql_select_db($dbName,$db);

// Text Datei öffnen
$fp = fopen($feedfile, 'r');
while($row = fgets($fp, 1024)) { 
  $row = explode(',', str_replace('"', '', $row));

  $user = $row[0];
  $password = $row[1];
  $email = $row[2];

// hier überprüfen, ob der $user schon in der Tabelle ist...

$sql = "INSERT INTO users2 (user, password, email) VALUES ('$user','$password','$email')";
mysql_query($sql) or die(mysql_error());
flush();
}

Jelly 13. Mai 2007 09:46

Re: mysql INSERT INTO / Duplicates
 
2 Möglichkeiten:

Vor jedem Insert in die Tabelle ein Select darauf ausführen und nach dem User suchen.

oder

wenn die Textdatei bereits sortiert nach name vorliegt, so kannst du den jeweils letzten eingelesenen Datensatz im Speicher halten und dann jeweils prüfen, ob der neu eingelesene mit dem im Speicher vorliegenden übereinstimmt.

Letzte Variante ist wohl effektiver da Du dir die Selects sparst. Dafür muss die Text Datei aber sortiert vorliegen.

Wenn es sich aber eh nur um 1000 Datensätze handelt, so würd ich erste Variante wählen, da wohl am schnellsten implementiert.

toms 13. Mai 2007 09:56

Re: mysql INSERT INTO / Duplicates
 
Zitat:

Zitat von Jelly
2 Möglichkeiten:

Vor jedem Insert in die Tabelle ein Select darauf ausführen und nach dem User suchen.

Danke Jelly!
Werde mich wohl für die erste Variante entscheiden. Es werden nur ca. 100 - 200 Datensätze sein.

arbu man 13. Mai 2007 10:07

Re: mysql INSERT INTO / Duplicates
 
So ein ähnliches Problem hat ich auch schon mal:
Vielleicht hilft es dir ja weiter: Theard

toms 13. Mai 2007 10:15

Re: mysql INSERT INTO / Duplicates
 
Zitat:

Zitat von arbu man
So ein ähnliches Problem hat ich auch schon mal:
Vielleicht hilft es dir ja weiter: Theard


Habe auch von dem "ON DUPLICATE" gelesen.
Mir ist aber nicht ganz klar, wie ich das anwenden muss. d.h eine Ueberpruefung auf $user..

marabu 13. Mai 2007 11:55

Re: mysql INSERT INTO / Duplicates
 
Hallo Thomas,

sobald du ein UNIQUE Constraint auf der Spalte USER eingerichtet hast, führt der Server die ON DUPLICATE Klausel selbsttätig aus - wenn deine Server-Version diese Syntax bereits unterstützt.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz