Mijn eerste Python-programma

Voor mijn werk moet ik een gigantische hoop energie-gegevens inladen in een tabel. Het bron-bestand is zo’n 2,5 Gb groot, en bovendien in XML-formaat. En dat moest dan nog bewerkt en ingeladen.

2,5 Gb in een tekst-editor inladen is nog niet zo makkelijk. Aanvankelijk had ik em geprobeerd. Het laadde wel, maar het bewerken was rampzalig.

Een alternatief was Ultraedit. Dit was al een stuk prettiger. Ik zag dat mijn XML een regel of 8 bevatte. Er misten nog regeleindes. Met zoeken en vervangen lukte het. vervangen door ^p. Even wachten en opslaan.

Nu nog een programma om er SQL van te maken.

Enkele maanden geleden had ik er een .net-programma voor geschreven. Nadeel was echter dat het grote bestanden niet in kan lezen. Na enkele seconden kreeg ik een foutmelding over het geheugen. Daarom heb ik het bronbestand met split onder Linux opgedeeld in stukken van 102 Mb. Opknippen gaat echter niet op de plekken die je graag wilt. Het behoeft nog het nodige knip- en plakwerk om de kop en staart goed te krijgen. Vervolgens elk bestand inlezen en converteren naar een insert-into query.
Dat is gelukt. Maar toch, 23 bestanden met het handje inladen…

Vandaag is het me gelukt om een Python-programma te schrijven. Python kan met SAX het hele bestand aan, door het in stukken in te lezen. Vervolgens wordt de gemaakte insert-into string gelijk uitgevoerd en in de energie-tabel gezet.

Het voordeel is dat je het gewoon kunt aanzetten en iets anders gaan doen. Enkele uren later is de boel geladen.

Maar wel even controleren of er quotes (‘) in de XML zitten. Bij 750.000 records merkte ik dat dat inderdaad het geval was. Twee stuks maar liefst. Na een zoeken en vervangen door niets is dat ook weer opgelost.

Python is snel te leren, maar het is wel zo dat het nogal zeurt over inspringingen. Notepad ++ gaf daarbij nog een rare bug te zien. Ik kreeg een melding van Python dat mijn programma verkeerde inspringingen bevatte, maar ze werden verkeerd weergegeven.

Een andere editor deed dat wel. Inderdaad, vreemde inspringingen, maar die zou ik dan wel graag te zien krijgen.

Advertisements
This entry was posted in Politiek and tagged , , . Bookmark the permalink.

One Response to Mijn eerste Python-programma

  1. Koos Quark says:

    Dan ben je straks toe aan de Terabytes.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s