• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung

Datum aus Excel Datei in MySQL Datenbank einlesen

cassiuskev

Idared
Registriert
02.06.10
Beiträge
25
Liebes Forum,
seit gestern schlage ich mich mit einem Problem herum und zwar versuche ich Excel-Tabellen mithilfe von phpMyAdmin in eine MySQL Datenbank zu importieren. Grundsätzlich funktioniert der Import der Excel Tabellen im csv Format, lediglich bei der Datumsspalte habe ich Probleme. Ich habe die Spalte in MySQL als date formatiert und wenn ich das richtig sehe erwartet MySQL das Datum in Form von bspw.: YYYY-MM-DD. Wenn ich die Tabelle direkt händisch über MyAdmin befülle gibt es keine Probleme. Soll eine Excel Datei mit dem selben Datumsformat (bspw. 2011-05-25) importiert werden, sagt mir MyAdmin, dass die SQL Syntax an dieser Stelle nicht stimmt (#1064). Ich würde zukünftig gerne ein Makro über meine Excel-Tabelle laufen lassen, welches mir die komplette Liste inklusive Datum so formatiert, dass ich die Excel-Datei ohne Problem über myAdmin einlesen kann. Könnt ihr mir sagen, in welchem Format ich die Datumsspalte in Excel dann formatieren muss? Also welches Excel-Datumsformat ist kompatibel mit meiner SQL-Datenbank. Ich freue mich über jeden Hinweis.
Lieben Dank,
Kevin
P.S.: Ich arbeite mit Excel für MAC 2011
 

wdominik

Weißer Winterglockenapfel
Registriert
15.01.10
Beiträge
880
Erstell mal eine neue Datumsspalte und fülle sie mit der Formel =(DATUM-25569)*86400, wobei DATUM ein Verweis auf die alte Spalte ist. Also steht das eigentliche Datum in Spalte A2 müsstest Du =(A2-25569)*86400 schreiben. Du kannst das dann kopieren und für alle Zeilen einfügen, Excel passt dann automatisch die Feldnamen an. Wenn alles gut läuft müsstest Du dann eine Spalte mit Unix-Timestamps haben mit welchen Du in eine DATE Spalte in Deiner MySQL Tabelle füllen kannst. Die Alte Datumsspalte mit den „Excel-Datumswerten“ natürlich nicht mit exportieren/importieren.
 

cassiuskev

Idared
Registriert
02.06.10
Beiträge
25
Danke für die Antwort. Werde ich dann später mal testen und dir berichten, was passiert ist.
Nochmals besten Dank,
Kevin
 

drp

Jerseymac
Registriert
12.04.11
Beiträge
458
Das wäre ja ziemlich praktisch wenn das funktionieren würde.
 

cassiuskev

Idared
Registriert
02.06.10
Beiträge
25
So, habe das jetzt gerade mal getestet und so lässt sich tatsächlich recht simpel ein timestamp (UTC/GMT) erzeugen. Danke für den Tip. Leider bin ich dann gleich auf die nächste Hürde in meiner Datenbank gestoßen. Wie muss ich die Datumsspalte jetzt in MyAdmin formatieren? Ich habe das naheliegende gemacht und als Typ "timestamp" definiert. Sobald ich das mache setzt er automatisch das Attribut und die Variable Extra auf "on update CURRENT_TIMESTAMP" und unter Standard schreibt er "CURRENT_TIMESTAMP". Meine sämtlichen Versuche die einzelnen Variablen zu ändern sind leider gescheitert. Sobald ich einen in excel erzeugten Timestamp in das Datumsfeld eintrage erscheint er in der Tabelle als "0000-00-00 00:00:00". Wie muss das Datumsfeld denn richtig formatiert werden, damit MySQL den Timestamp auch als solchen interpretiert? Lieben Dank.
 

Guy.brush

Weißer Winterkalvill
Registriert
15.12.08
Beiträge
3.545
Hi!

"YYYY-MM-DD hh:mm:ss" sollte schon funktionieren. Du musst nur aufpassen, dass du nichts vertauscht hast, denn sobald ein unsinniger Wert drin steht, wird der Timestamp auf 00... gesetzt. Z.B. wenn du den Monat > 11 setzt, den Tag > 31, Stunde > 23, Minute oder Sekunde > 59.

Übrigens kann ich dir bei sowas Perl mit DBI sehr empfehlen. Das wäre quasi das "Makro", das du haben willst. Damit kann man seinen Input sehr effizient überprüfen, notfalls anders formatieren und in die DB importieren.