Daten aus .xls in MySQL-Datenbank

Dinchen333

Mitglied
Hi,

ich habe endlich ein ganz gutes Gästebuchscript gefunden, was mit DB funktioniert, nachdem der Anbieter 123gb.de seinen Dienst einstellt.
Ich habe jetzt die Einträge aus dem alten Gästebuch als xls-Datei (Excel) und muss die irgendwie in die MySQL-Datenbank bekommen.
Wie mache ich das am besten? (Habe ich leider noch nie gemacht)

Die Excel-Datei mit den alten Beiträgen sieht so aus:
http://img5.fotos-hochladen.net/uploads/screenshot20142qglsdv7kt.png

Und die Datenbank-Tabelle sieht so aus:
http://img5.fotos-hochladen.net/uploads/nnv65zxj4ol7.png

Ich hoffe auf eure Hilfe.
 
Hallo,

wo befindet sich die MySQL-Datenbank? Hast du Zugriff auf den Befehl LOAD DATA?

Ich würde es so machen:

1. Excel-Datei zu CSV konvertieren. Hierzu einfach "Speichern unter" in Excel wählen.
2. Die Inhalte innerhalb der CSV-Datei umordnen (da die Reihenfolge der Spalten anders ist). Vielleicht ein PHP-Skript?
3. CSV-Datei importieren. Wenn man schon #2 mit PHP löst, könnte man auch gleich dies hier auch mit PHP erledigen. CSV-Datei
 
Hi, danke für deine Antwort ComFreek.
Die Datenbank ist auf meinem Server, ich komme also in PHPmyAdmin rein.
Wahrscheinlich ist das hier sowas in der Art wie das Load Data, oder?
http://www.fotos-hochladen.net/uploads/nn12mq8agduzh.png

Ich werde mal versuchen die Daten zuerst in der Excel-Datei umzusortieren und es dann als CSV zu konvertieren.
Was muss ich als "Zeichencodierung der Datei" dann angeben?
 
Das kommt auf die Zeichenkodierung an, in der Excel die CSV-Datei ausgibt. Das kannst du leider nicht angeben (hab's gerade mit Excel 2013 probiert).
Ich würde im Zweifelsfall einfach mit Notepad++ nachprüfen, welche Kodierung erkannt wird und ob alle Umlaute bei UTF-8 korrekt dargestellt werden.

Ja, du kannst PHPMyAdmin zum Importieren nutzen.
 
Puh, irgendwie ist es leider nicht so einfach, wie gedacht.
Ich habe die Excel-Datei jetzt so umgestellt, dass es passen müsste:
http://img5.fotos-hochladen.net/uploads/unbenannt1dnr0qlk8y5.jpg

Wenn ich das als CSV speichere, sieht es so aus:
http://img5.fotos-hochladen.net/uploads/screenshot2014kjvtdxn34f.png

Dass ich hier die erste Zeile löschen muss ist mir klar, das zeigt ja nur die leeren Spalten in
Zeile 1 an.
Auch die ";;;" nach Status ergeben wohl keinen Sinn, weil da ja nichts mehr drin ist,
deswegen lösche ich mit Notepad++ alle ";;;". (natürlich nur alle wo drei hintereinander sind)
Dann sieht es so aus: http://img5.fotos-hochladen.net/uploads/screenshot2014v8kzlr93da.png

So sollte es jetzt eigentlich richtig sein.
Ich kopiere mit jetzt die Daten bis zum Eintrag 10 in eine neue Datei, um es erst mal mit 10 Einträgen zu testen.
Die neue Datei wird mir als "ANSI as UTF-8" angezeigt, bei Kodierung ist UTF8 ohne Bom eingestellt.
Ich speichere die Datei als eintrage.csv und importiere die Datei ins PHPmyAdmin.
http://img5.fotos-hochladen.net/uploads/ggj4u6wrz52b.png

Da bekomme ich dann diese Fehlermeldung:
http://img5.fotos-hochladen.net/uploads/ugxu08wzobdg.png

Jetzt probiere ich noch alle Daten aus der Tabelle zu löschen und die Datei dann zu importieren, da klappt es dann bis zum Eintrag 6, bei 7 kommt diese Fehlermeldung:
http://img5.fotos-hochladen.net/uploads/fut08n26xlch.png
Die Tabelle sieht dann so aus:
http://img5.fotos-hochladen.net/uploads/tmkpt8o0hvsm.png

Jetzt weiß ich leider nicht mehr weiter, was könnte mein Fehler sein?
 
Die Fehlermeldung für den Eintrag 6 und 7 kommen, da bereits ein Eintrag mit der ID 6 und 7 existieren.
Dies kann Unterumständen so passieren, wenn vielleicht in einen Eintrag ein Nutzer ein ; (Semikolon) für ein Smiley oder Ähnliches genutzt hat.
 
Lösche die ID-Spalte in der CSV-Datei. Woher kommt diese Spalte denn? In der Excel-Datei war sie noch nicht da.

Ein anderes Problem stellt auch die Datums- und Zeitangabe dar. Bei deinem neuen System wird diese anscheinend in Sekunden seit 1970 (UNIX Timestamp) gemessen. Wie du das möglichst einfach konvertieren kannst, weiß ich gerade nicht. Ich habe aber gerade ein vage Idee, lass sie mich mal ausprobieren.
 
Die ID-Spalte habe hinzugefügt, damit die Daten gleich sind wie in der Tabelle.
Ich habe auch IP, Kommentar und Status noch hinzugefügt.
Excel-Datei alt: http://img5.fotos-hochladen.net/uploads/screenshot20142qglsdv7kt.png
Excel-Datei neu: http://img5.fotos-hochladen.net/uploads/unbenannt1dnr0qlk8y5.jpg
Dabei habe ich mich an der Tabelle orientiert: http://img5.fotos-hochladen.net/uploads/nnv65zxj4ol7.png

Das mit der Zeit habe ich auch schon gesehen, das Problem hab ich aber erstmal zurück gestellt,
erst mal muss das Importieren ja überhaupt klappen. :)
 
Ja, das war mir schon klar, wieso du das gemacht hattest ;)
Nur es ist so, dass die Werte in der ID-Spalte eindeutig sein müssen. Hast du momentan Daten in der neuen Datenbank? Hier entsteht nämlich der Konflikt, dass bestimmte ID-Werte schon vorhanden sind.

Deswegen lösch mal die ID-Spalte komplett aus der CSV-Datei (inkl. dem Semikolon nach jeder Zelle) und überprüfe, ob PHPMyAdmin diesmal Fehlermeldungen anzeigt.
 
Zurück