Vinzenz Mai: Konvertierung MySQL -> Excel - 2,8 Millionen Datensätze

Beitrag lesen

Hallo Alexander,

a) Wieviele Tabellen gibt es?

Eine Tabelle ist drin.

b) Wieviele Zeilen haben die einzelnen Tabellen?
   Wird das Excel-Maximum von 65536 Zeilen überschritten?
   Wenn ja, hast Du das nächste Problem.

Öhm, hüstel ... gut 2,8 Mio. (!) Zeilen werden angezeigt.

das ist eine schlechte Nachricht, die aber auch ihre guten Seiten hat. Wenn ich an die 660 MB große Textdatei denke, wovon wiederum etwas Overhead ist, so komme ich auf weniger als 300 Byte pro Zeile im Durchschnitt, d.h. die Begrenzung von ca. 32000 Zeichen pro Zelle dürftest Du nicht erreichen.

Du wirst ca. 42 Arbeitsblätter benötigen, vielleicht willst Du die Daten auch auf mehrere Arbeitsmappen aufteilen, damit die Dateigrößen im Rahmen bleiben. Gehe einfach davon aus, dass Excel doppelt soviel Speicherplatz benötigt wie Deine Textdatei groß war, da Excel die Daten im UTF-16-Format speichert (soweit ich mich erinnere).

Wie könntest Du nun vorgehen:
Mein Vorschlag wäre es, mit ODBC aus Excel heraus auf MySQL zuzugreifen. Dazu benötigst Du zuallererst wieder etwas Neues, den ODBC-Treiber für MySQL und Windows.

Nachdem Du diesen installiert hast, musst Du einen DSN (Data Source Name) konfigurieren, wie im Handbuch beschrieben. Anschließend kannst Du (manuell) so vorgehen, wie im Kapitel UsingConnector/ODBC with Microsoft Word or Excel beschrieben, für jedes Arbeitsblatt mit einer eigenen Abfrage, wobei Du die Portionen durch die Verwendung der LIMIT-Klausel abtrennst.

SELECT  
    *                      -- ja, auch ich verwende mal SELECT * :-)  
FROM tabelle               -- bitte hier den Namen Deiner Tabelle verwenden  
LIMIT 0,65000              -- Die ersten 65000 Datensätze  
  
SELECT  
    *                      -- ja, auch ich verwende mal SELECT * :-)  
FROM tabelle               -- bitte hier den Namen Deiner Tabelle verwenden  
LIMIT 65000,65000          -- Die Datensätze 65000 bis 130000  
  
SELECT  
    *                      -- ja, auch ich verwende mal SELECT * :-)  
FROM tabelle               -- bitte hier den Namen Deiner Tabelle verwenden  
LIMIT 130000,65000         -- Die Datensätze 130000 bis 195000  

und so weiter. Ich denke, Du verstehst das Prinzip. Für jedes Arbeitsblatt jeweils eine Abfrage. Du dürftest 42 oder 43 Blätter benötigen. Sollte nach dem ersten erfolgreichen Zugriff auch von Hand in maximal zwei Stunden fertig sein. Ich empfehle Dir, für jede Abfrage eine neue Arbeitsmappe zu nehmen. Zusammenfügen kannst Du ja später noch.

Die Alternative wäre das programmgesteuerte Erstellen dieser Arbeitsmappen (bzw. Tabellenblätter über Visual Basic for Applications). Wenn Du damit bisher noch nichts gemacht hast, dann lass es jetzt für diesen Zeitpunkt einfach bleiben. Ich denke, Du wirst froh sein, wenn die Daten endlich in Excel sind.

Du solltest Dir nun noch überlegen, ob Du die Tabellenblätter bis zum Rand füllst - oder lieber mindestens 50 Zeilen frei läßt, so dass Platz ist für Verweise auf die anderen Blätter. Ich empfehle Dir, einfach 65000 Zeilen pro Blatt zu nehmen, es läßt sich dann leicht rechnen.

Viel Erfolg - und falls Du Fragen bei einem der Schritte haben solltest, weißt Du ja, wo Du Antworten findest.

Vinzenz