Thorsten Körner am Dienstag, 13. Januar 2004 10:24:
Hallo Matthias
Am Dienstag, 13. Januar 2004 07:30 schrieb Matthias Houdek:
Thorsten Körner am Dienstag, 13. Januar 2004 02:53:
Hallo Liste
Ich habe die Aufgabe eine Liste mit Adressen aus einem Word-Dokument in eine MySQL-DB zu schreiben. Da es sich um ca. 7000 Einträge handelt, brauche ich ein Script dafür. Problem 1:
[...]
Wer hat eine Idee, wie ich diese Daten in eine MySQL-Tabelle bekomme.
Prima, vor einem ähnlichen Problem stehe ich auch bald. Allerdings mit erhöhtem Schwierigkeitsgrad: Die Daten stehen in ca. 300 Word-Dokumenten (Tabellen), wobei daraus auch noch zwei miteinander verknüpfte Tabellen gemacht werden müssen (Redundanz beseitigigen).
Houston wir haben ein Problem;-)
Oh, ja. Und das Schlimmste: Die Tabellen sind auch noch strukturiert, der Kopf ist anders unterteilt als die Daten da drunter. Aber im Kopf stehen auch Daten. Und sind die Tabellen auch teilweise noch "zerhackt", weil nicht beim Eintragen eines neuen Datensatzes einfach eine neue Zeile angefügt wird, sondern der Einfach halber die Zeile aus einem anderen Dokument kopiert wurde. Da stimmen aber die Spaltenbreiten nicht ganz exakt. Beim übernehmen der Tabelle in Excel (oder auch OOc-calc) kommen da teilweise die scuristen Konstruktionen bei raus. Ich glaube, die Daten abschreiben ist bald schneller :-(
Aber wenn alles in einer Tabelle ist, geht es halbwegs: in Word alles außerhalb der Tabelle eliminieren, dann alle Zeilenumbrüche entfernen (geht mit "Suchen und Ersetzen"), dann alle eventuell vorhandenen zukünftigen Feldtrenner (z.B. ;) in der zu erzeugenden Textdatei durch andere eindeutige Zeichen ersetzen und zuletzt die Tabelle in Text umwandeln (dabei kann man die Trennzeichen ";" zwischen den Feldern festlegen). Nun noch als Textdatei speichern (nicht im DOS-Text-Format, dann sind sogar die Zeilenumbrüche Unix-konform).
Der Tipp von Felix hat mich da auf eine einfachere Lösung gebracht. 1: Word-Doc in OpenOffice.org öffnen 2: Alles markieren (oder soviel, wie die Zwischenablage zulässt) und kopieren. 3: Kopierte Daten in OOo-Calc Tabelle einfügen. 4: Calc-Tabelle als CSV-Datei sichern
Den Umweg über OOo kannst du dir sparen, da du aus Word heraus direkt die Tabelle in eine CSV schreiben kannst (so die Tabelle normal ist *g*).
5: CSV-Datei in eine MySQL-Tabelle einfügen (als Hilfstabelle zur Zwischenspeicherung), die exakt die gleiche Struktur hat, wie die Datei 6: Normaliesieren mit Hilfe eines PHP-/Perl-/Python-Scriptes bzw. direct auf der MySQL-Console.
Das meinte ich mit MySQL-Standard-Aufgabe ;-)
Mit einem Basic-Macro im Writer müsstest Du die Umwandlung von *.doc in *.csv evtl automatisch hinbekommen. Dann könntest Du die über 300 Dateien vermittels einer Schleife in einem Bash-Script in die DB zaubern können.
Naja, so einfach ist das leider nicht. Im Tabellenkopf stehen jeweils die Stammdaten und in der Tabelle darunter dann mehrere Datensätze zu dieser Hauptentität. Das wird schon ein wenig komplexer. Ich brächte da wohl mal dringend ein paar Praktikanten mit Schreibmaschinenkenntnissen *g*. -- Gruß MaxX 8-)