CSV in My SQL Datenbank importieren und zwar umgedreht!
Christoph
- datenbank
Hallo zusammen,
ich nutze zur Zeit ein Newsscript, welches als Speicher der Meldungen eine .dat-Datei verwendet. Nun will ich das Ganze auf My SQL umstellen und habe daher die .dat-Datei mit folgender Funktion in die Datenbank importiert:
LOAD DATA LOCAL
INFILE '/home/www/servers/www.servername.de/tmp/import.csv'
REPLACE
INTO TABLE tabellenname
FIELDS
TERMINATED BY ';';
Jetzt ist es aber so, dass das Newsscript die neusten Meldungen in der .dat-Datei immer ganz nach oben geschrieben hat. Bedeutet, wenn ich in der Datenbank nun eine Tabelle mache und dort ein id-Feld, welches auf auto_increment steht, hat die neuste News im .dat-File die ID 1 und die älteste die letzte ID. Wenn ich jetzt eine neue Meldung in die Datenbank eintrage, setzt die sich ja ans Ende und bekommt eine ID Zahl hoher als die vorherige. Wenn ich aber jetzt die Datenbank auslese, kommt die neuste News die ich direkt in die Datenbank eingetragen habe ganz oben und dann kommen erstmal die alten Meldungen, die ich durch das CSV-File importiert habe. Da ja die neuste Meldung im .dat-File die ID 1 hat, da beim Import einer CSV-Datei das ganze ja von oben nach unten ausgelesen wird.
Nun meine Frage: Wie schaffe ich es, dass phpMyAdmin die .dat-Datei von unten nach oben ausliest und nicht von oben nach unten? Vielleicht gibt es ja eine viel einfachere Lösung für mein Problem, die ich nur nicht kenne! Über Hilfe freue ich mich.
Gruß
Christoph
Hallo,
du machst dort gerade zwei bei Datenbanken nur bis zum Tellerrand-schauende Dinge:
MfG
Rouven
Hallo Christoph,
in Unwissenheit einer besseren Lösung habe ich folgenden Vorschlag. Rechne doch nach dem Einlesen die IDs um. Das kannst du mit mit einem generischen SQL Query bewerkstelligen etwa dieser Art:
UPDATE table SET id = MAX(id) - id + 1;
ich denke du verstehst die Kernessenz. Es kann allerdings sein, dass du erst den AUTO_INCREMENT entfernen und dann wieder einfügen musst. Und es ist auch denkbar, dass MAX(id) sich während der Ausführung dieses Queries ändert und damit alles verhunzt. Diese dinge verbleiben für dich zum ausprobieren, aber wenn du damit durch bist hast du eine Lösung, die du immer wieder verwenden kannst.
Gruß,
Cruz