Tausta
Nopeasti kasattu Python-skripti mysqldump-tiedostojen muuttamiseksi CSV-tiedostoiksi. Optimoitu Wikipedian tietokantadumpeille.
Erittäin suuria MySQL-dumppeja voi olla vaikea tai mahdoton tuoda melko rajoitetulla laitteistolla. Ärsyttävää MySQL-dumpissa on se, että ainoa käytännöllinen tapa manipuloida sitä on MySQL:n kautta, mikä periaatteessa vaatii laitteistopäivityksen, jos haluaa työskennellä Wikipedian MySQL-dumppien kaltaisten suurten dumppien kanssa.
Eikö olisi hienoa, jos olisi jokin tapa muuntaa MySQL-dumppien formaatti (joka on sarja INSERT-käskyjä) universaaliin formaattiin… kuten… CSV:ksi?
Nyt nyt on.
Tämä lyhyt Python-skripti käyttää hyväkseen sitä tosiasiaa, että MySQL:n INSERT-lausekkeen rakenne ei poikkea liikaa CSV:stä, ja käyttää Pythonin CSV-parseria (ennen ja jälkeen jonkin verran tekstin vääntelyä) muuttaakseen MySQL-dumppitiedostosta CSV-tiedoston.
Käyttötarkoitus
Ajoita vain komentorivillä: python mysqldump_to_csv.py
ja sen perässä SQL-tiedoston tiedostonimi. Voit määrittää useita SQL-tiedostoja, ja ne kaikki liitetään yhteen CSV-tiedostoksi. Tämä skripti voi myös ottaa SQL-tiedostoja vakiosyötteestä, mikä voi olla hyödyllistä, kun halutaan muuttaa pakattu MySQL-dumppi CSV-tiedostoksi purkamatta MySQL-dumppia.
zcat dumpfile.sql.gz | python mysqldump_to_csv.py
Miten se toimii
Seuraava 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);
muutetaan seuraavaksi CSV:ksi:
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
Ei ole kovin vaikeaa nähdä, mitä on tekeillä, mutta voit toki katsoa lähdekoodia nähdäksesi tarkalleen, miten muunnos tehdään.
Todo
- Tarkka sarja yksikkötestejä, jotka todistavat, että tämä toimii monipuolisella joukolla MySQL-dumppitiedostoja ilman sivuvaikutuksia
- Jotain lisää dokumentaatiota
- Ratkaisu bugiin, jossa yksi sarake on merkkijono, joka loppuu
)
:een, ja seuraava sarake on merkkijono, jonka alkukirjainmerkki on(
. Nykyisen ohjelmalogiikan mukaan sulkeet poistettaisiin.
Vastaa