neue daten in tabelle ergänzen

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

neue daten in tabelle ergänzen

Postby Brody » 02. August 2004 11:05

guten Tag online,

ich habe eine Datenbank mit einer Tabelle. Täglich kommen neue Datenbestände hinzu, die wir im Büro in einer Excel-Tabelle sammeln, diese dann in eine sql datei konvertieren.

Problem ist, das die Konvertierung immer mit INSERT INTO arbeitet, also wenn ich die gesamte Tabelle aufladen will, werden die alten Daten NICHT überschrieben, sondern ergänzt. So habe ich dann alles doppelt, nur halt die neuen nicht.

Nur die neuen sammeln und konvertieren kann ich nicht, da durch die neuen manchmal Alteinträge nun noch zugehörig erkannt und zugewiesen werden. Somit muss ich also immer die gesamte Tabelle neu aufspielen.

Nur wie bitte kann ich die aufladen, daß diejenigen mit gleicher id überschrieben werden?
Brody
 
Posts: 22
Joined: 31. July 2003 21:32

Postby Wiedmann » 02. August 2004 12:30

werden die alten Daten NICHT überschrieben, sondern ergänzt

Woran man sieht, dass man immer einen primären Schlüssel haben sollte...

diese dann in eine sql datei konvertieren.
...
Problem ist, das die Konvertierung immer mit INSERT INTO arbeitet
...
Nur wie bitte kann ich die aufladen, daß diejenigen mit gleicher id überschrieben werden?

Die Spalte `id` muß in der MySQL-Datenbank als Primärschlüssel definiert sein (die kommt ja hoffentlich auch in der SQL-Datei von Excel vor?).

In der SQL-Datei (Excel-Export) ersetzt du dann vor dem Importieren in MySQL alle INSERT INTO - Anweisungen durch REPLACE INTO (suchen & ersetzten in einem Texteditor).
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Brody » 02. August 2004 12:52

ah, :)

cool, ich hoffte, dass es geht und möglichst einfach.

also id gibts in sql als primär, das hat mir jemand eingerichtet und in der excel tabelle ist id auch immer dabei.

danke
Brody
 
Posts: 22
Joined: 31. July 2003 21:32

Postby Wiedmann » 02. August 2004 13:39

Brody wrote:also id gibts in sql als primär, das hat mir jemand eingerichtet und in der excel tabelle ist id auch immer dabei.


Dann scheinen das aber verschiedene ID's zu sein und das ID - Feld von MySQL wird wohl automatisch erstellt ("AUTO_INCREMENT"?).

Wenn du versuchst mit INSERT INTO eine Zeile in eine MySQL -Tabelle schreiben, wo der Wert von dem Primärenschlüssel schon vorhanden ist, dann kommt ein Fehler und es wird kein neuer Datensart erzeugt *grübel*

Ergo, kann das Feld ID von Excel nichts mit dem Feld ID in MySQl zu tun haben. Hättest du von Exchel eine ID = 1 und schreibst das mit INSERT in die Tabelle wo es schon eine ID = 1 gibt, und diese ist der primäre Schlüssel, kommt ein Fehler. Ein neuer Datensatz kommt da nur, wenn es den primären Schlüssel von MySQL in der Excel-Datei nicht gibt.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Brody » 02. August 2004 14:35

hmm. für einen moment lass uns mal so tun wie wenn ich gar nix verstanden hätte.....

ich habe eine excel tabelle, deren spalten:
id,year,playername,ip,alias,aip,fip

sinn ist, aus täglich neuen serverlogs die spieler ips zu sammeln. die datenbank ist für unsere admins, die zugang haben.
die id wird immer neu eingezählt, wenn die tabelle neu aktualiesiert wird.

nachdem die tabelle neu aktualisiert wird, wird sie in sql konvertiert. dann habe ich immer INSERT INTO befehle. eine bestehende "id 1" beispw. wird aber nicht überschrieben. es bricht einfach mit fehlern ab.

nun wäre denkbar, einfach nur die neuen enträge zu ergänzen, jedoch werden hin und wieder alteinträge mit neuen infomationen gefüttert, wie zb der spielername nun einem aka(alias) namen zugeordnet werden kann. in einem solchen fall ändert sich ja dann der eintrag für eine id durch zusätzliche informationen.

REPLACE INTO hat nicht funktioniert, und
UPDATE INTO auch nicht.

bisher habe ich immer die komplette sql datenbank gelöscht und neu eingespielt, sicherlich geht das aber auch anders, ja?
Brody
 
Posts: 22
Joined: 31. July 2003 21:32

Postby Wiedmann » 02. August 2004 16:39

Diese Aussagen wiedersprechen sich?:
Brody wrote:werden die alten Daten NICHT überschrieben, sondern ergänzt. So habe ich dann alles doppelt, nur halt die neuen nicht.

Brody wrote:eine bestehende "id 1" beispw. wird aber nicht überschrieben. es bricht einfach mit fehlern ab.


Welche Fehlermeldung kam?:
REPLACE INTO hat nicht funktioniert


Was meinst du damit?:
die id wird immer neu eingezählt

--> Wenn du REPLACE benutzt, muß natürlich in beiden Tabellen (vorhandene in MySQL und neue aus Excel) ein Feld eindeutig sein, um die Datensätze zueinander zuordnen zu können.

Wenn du jedesmal die vorhandene Datenbank vor dem Import löscht, wie kommt dann der Primärindex wieder in die Datenbank so wie es für dich eingerichtet wurde?

BTW, wenn die Excel Tabelle eh die komplette zukünftige MySQL-Tabelle enthält langt es viellciht wirklich einfach ein DROP TABLE an den Anfang der SQL-Datei zu schreiben...
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 1 guest