63130
Goto Top

XLS Dateien in eine Datenbank importieren

Ja, ich schon wieder. Diesmal habe ich wieder ein Problem und bei Google habe ich keine Hilfe gefunden. Diesmal geht es um den Import von Daten in eine MySQL Datenbank.

Also mein Plan sieht wie folgt aus: Der User hat bestimmte Daten in einer Excel-Tabelle (*.XLS). Alle Spalten haben immer in allen Tabellen von allen nutzern die gleiche Überschrift. Nun soll der User auf eine Seite gehen, dort in einem Upload-Formular die Datei hochladen. Die Daten aus der Datei sollen nach dem upload in die MySQL Datenbank importiert werden.


Meine Frage ist erstmal grundsätzlich: Ist das überhaupt möglich?

Wenn nein in welchem Maße wäre es möglich also mit welchen Veränderungen am "plan" könnte man sowas ähnliches realisieren?

Und natürlich: Wie ist sowas möglich, welche Befehle muss ich mir anschauen und so.


Vielen Dank für eure Hilfe
Viele Grüße,
v3rtico

Content-Key: 95232

Url: https://administrator.de/contentid/95232

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: Frt001
Frt001 25.08.2008 um 11:21:47 Uhr
Goto Top
Warum nicht gleich ein Webformular machen mit Php und mysql oder sind die Excel sheets so lang?
Mitglied: 63130
63130 25.08.2008 um 11:24:16 Uhr
Goto Top
Das Webformular gibt es bereits, aber die Sheets haben teilweise bis zu hundert Einträgen. Außerdem soll der Anwender selbst in der Lage sein, die Einträge über einen solchen Upload einzustellen.
Mitglied: Frt001
Frt001 25.08.2008 um 11:35:50 Uhr
Goto Top
Eine Lösung wäre ODBC und DAO, da es dafür kein Standart Makro gibt, müsstest du dir selbst eins machen.

Oder aber du schaust mal hier nach

http://www.office-loesung.de/ftopic238716_0_0_asc.php
Mitglied: 63130
63130 25.08.2008 um 11:41:49 Uhr
Goto Top
Hmm... Kann man Visual Basic auf nem Server ausführen?
Mitglied: petenicker
petenicker 25.08.2008 um 12:06:37 Uhr
Goto Top
Hallo,

gleich zu Anfang eine Warnung: ich habe das nicht getestet. Wenn du das versuchen willst, nutze um Himmels Willen nicht eine Produktivumgebung!

Du kannst die Excel-Tabelle als eine tab-getrennte Textdatei abspeichern.

Diese txt-Datei lädst du auf den Server hoch. Danach solltest du dich damit befassen: http://dev.mysql.com/doc/refman/5.1/de/loading-tables.html

Wie gesagt, ich habe es nicht getestet. Ich kann dir nicht mit Sicherheit sagen, ob bereits bestehende Datensätze dabei überschrieben werden.

Könnte aber mit dem Verfahren funktionieren.
Mitglied: 63130
63130 25.08.2008 um 14:28:32 Uhr
Goto Top
Bei den Tab-getrennten Dateien muss man aber glaube ich jedes leere Feld auf NULL setzen, also /N eintragen. Das ist wiederum in meinem Anwendungsberecih zu viel Arbeit. Trotzdem Danke für die Idee.

Mir ist noch die Idee gekommen, ob man nicht vielleicht das CSV Format verwenden kann. Das müsste doch bestimmt möglich sein und die leeren felder müssen nicht ausgefüllt werden da Sie ja einfach mit ,, übersprungen werden. Was meint ihr dazu? geht das?
Mitglied: petenicker
petenicker 25.08.2008 um 20:13:27 Uhr
Goto Top
Ja, das funktioniert.

Ich habe kurz eine dreispaltige Excel-Tabelle erstellt und sie im csv_format exportiert. Allerdings hat Excel den Semikolon als Spaltentrennzeichen verwendet.

Im MySQL Monitor hab ich dann folgende Befehl abgesetzt:
LOAD DATA LOCAL INFILE 'pfad_zum_csv_file' INTO TABLE tabellenname FIELDS TERMINATED BY ';' IGNORE 1 LINES;  

Habe den Befehl mehrere Male wiederholt, bestehende Datensätze wurden nicht überschrieben. Allerdings solltest du auf die Zeichensätze achten, sonst bekommst du Probleme mit den Umlauten. Das kannst du aber dann in PHP umsetzen.

Hoffe, ich habe dich ein wenig weiter gebracht.
Mitglied: 63130
63130 26.08.2008 um 08:49:28 Uhr
Goto Top
Super, das werde ich gleich mal ausprobieren! Danke face-smile
Mitglied: Marquee
Marquee 20.05.2010 um 20:13:56 Uhr
Goto Top
Hi,

eventuell kannst Du ja dbTube.org verwenden. Es ist ein PHP Script mit dem man
native Excel importieren kann. Man erstellt zuvor mit einem graphischen AJAX Editor
eine import Definition welche man später immer wieder verwenden kann.

Gruß