Pozadí

Rychle nabouraný skript v jazyce Python pro přeměnu souborů mysqldump na soubory CSV. Optimalizováno pro výpisy databází Wikipedie.

Mimořádně velké výpisy MySQL může být obtížné nebo nemožné importovat na poměrně omezeném hardwaru. Nepříjemné na výpisech MySQL je, že jediný praktický způsob, jak s nimi manipulovat, je prostřednictvím MySQL, což v podstatě vyžaduje upgrade hardwaru, pokud někdo chce pracovat s velkými výpisy, jako jsou výpisy MySQL Wikipedie.

Nebylo by skvělé, kdyby existoval nějaký způsob, jak převést formát výpisů MySQL (což je série příkazů INSERT) do univerzálního formátu… jako…. CSV?

No, teď už je.

Tento krátký skript v jazyce Python využívá toho, že struktura příkazu MySQL INSERT se příliš neliší od CSV, a pomocí CSV parseru Pythonu (před a po nějaké úpravě textu) změní soubor výpisu MySQL na soubor CSV.

Použití

Stačí spustit python mysqldump_to_csv.py následovaný názvem souboru SQL. Můžete zadat více souborů SQL a všechny budou spojeny do jednoho souboru CSV. Tento skript může také přijímat soubory SQL ze standardního vstupu, což může být užitečné pro přeměnu zazipovaného výpisu MySQL na soubor CSV bez rozbalování výpisu MySQL.

zcat dumpfile.sql.gz | python mysqldump_to_csv.py

Jak to funguje

Následující 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);

se změní na následující 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

Není příliš složité zjistit, co se děje, ale určitě se můžete podívat do zdrojového kódu, abyste viděli, jak přesně se transformace provádí.

Todo

  • Důkladná série jednotkových testů, která dokazuje, že to funguje na rozmanité sadě výpisů MySQL bez jakýchkoli vedlejších efektů
  • Další dokumentace
  • Řešení chyby, kdy jeden sloupec je řetězec končící na ) a další sloupec je řetězec začínající na (. Současná logika programu naznačuje, že by se závorky měly odstranit

.