Background

Un script Python rapid de asamblat pentru a transforma fișierele mysqldump în fișiere CSV. Optimizat pentru descărcările de baze de date Wikipedia.

Descărcările MySQL extraordinar de mari pot fi dificil sau imposibil de importat pe un hardware destul de limitat. Lucrul enervant în legătură cu un dump MySQL este că singurul mod practic de a-l manipula este prin MySQL, ceea ce necesită în esență un upgrade hardware în cazul în care se dorește să se lucreze cu dump-uri mari, cum ar fi dump-urile MySQL Wikipedia.

Nu ar fi grozav dacă ar exista o modalitate de a converti formatul de dump MySQL (care este o serie de instrucțiuni INSERT) într-un format universal… cum ar fi… CSV?

Bine, acum există.

Acest scurt script Python profită de faptul că structura unei declarații MySQL INSERT nu este prea diferită de CSV, și folosește parserul Python CSV (înainte și după unele modificări de text) pentru a transforma fișierul de golire MySQL într-un fișier CSV.

Utilizare

Cercetați python mysqldump_to_csv.py urmat de numele de fișier al unui fișier SQL. Puteți specifica mai multe fișiere SQL, iar acestea vor fi toate concatenate într-un singur fișier CSV. Acest script poate primi, de asemenea, fișiere SQL de la intrarea standard, ceea ce poate fi util pentru a transforma o descărcare de gestiune MySQL în format gzip într-un fișier CSV fără a decomprima descărcarea MySQL.

zcat dumpfile.sql.gz | python mysqldump_to_csv.py

Cum funcționează

Următorul SQL:

INSERT INTO `page` VALUES (1,0,'April','',1,0,0,0.778582929065,'20140312223924','20140312223929',4657771,20236,0),(2,0,'August','',0,0,0,0.123830928525,'20140312221818','20140312221822',4360163,11466,0);

este transformat în următorul CSV:

1,0,April,1,0,0,0.778582929065,20140312223924,20140312223929,4657771,20236,02,0,August,0,0,0,0.123830928525,20140312221818,20140312221822,4360163,11466,0

Nu este prea dificil de văzut ce se întâmplă, dar cu siguranță vă puteți uita la codul sursă pentru a vedea exact cum se face transformarea.

Todo

  • O serie riguroasă de teste unitare, care să dovedească faptul că acest lucru funcționează pe un set divers de fișiere de vidare MySQL fără efecte secundare
  • Mai multă documentație
  • O soluție la o eroare în care o coloană este un șir care se termină în ) și următoarea coloană este un șir care începe în (. Logica actuală a programului sugerează că parantezele ar fi desființate.

.