Eilen tarkastelin mysqldumpin peruskäyttöä MySQL-tietokantojen varmuuskopiointiin. Tänään katson, miten mysqldumpia voidaan käyttää tietojen dumppaamiseen MySQL-tietokannasta CSV- ja tabulaattorilla rajattuihin tekstitiedostoihin sen sijaan, että käytettäisiin SQL-insert-kyselyjä, mikä on oletusarvoinen dumppausmenetelmä.
mysqldump -u -p -T/path/to/directory
-u-lippua käytetään määrittämään käyttäjänimi, jota käytetään yhteyden muodostamiseen MySQL-tietokantapalvelimelle, ja korvaisit ylläolevan esimerkkiesimerkin osan käyttäjänimelläsi.
-p-lippu osoittaa, että syötät salasanan tietokantaan liittymistä varten; sitä kysytään, kun komennon suoritus alkaa.
-T-lippu, jota seuraa hakemiston nimi, kertoo, mihin MySQL kirjoittaa tiedostonsa. -T-merkin ja hakemistonimen alun väliin voi laittaa välilyönnin tai ei välilyöntiä: voit päättää, kumpi tahansa toimii. On tärkeää huomata, että käyttäjän, jolla MySQL-palvelin toimii, on voitava kirjoittaa määritettyyn hakemistoon. Jos se ei ole, saat seuraavanlaisen virheilmoituksen:
mysqldump: Got error: 1: Can't create/write to file '/path/to/filename.txt' (Errcode: 13) when executing 'SELECT INTO OUTFILE'
Jos Linux-koneessasi on SELinux käytössä, hakemiston on oltava myös SELinux-konfiguraation mukaan sallittu MySQL:n kirjoitettavaksi.
Mysqldumpin luomat tiedostot
Käytettäessä yllä olevaa esimerkkiä tietokannalla, jossa on kaksi taulua nimeltä ”jotain” ja ”jotain_muuten”, luodaan neljä tiedostoa seuraavasti:
- something.sql – sisältää SQL:n taulun luomista varten. Oletusarvoisesti se sisältää
DROP TABLE IF EXISTS `something`;
osana kyselyä - something.txt – ”jotain”-taulukon tiedot tabulaattorilla erotetussa muodossa
- something_else.sql – sisältää SQL:n taulukon luomista varten. Oletusarvoisesti se sisältää
DROP TABLE IF EXISTS `something_else`;
osana kyselyä - something_else.txt – ”jotain_else”-taulukon tiedot tabulaattorilla erotetussa muodossa
Jos et halua *.sql-tiedostoja luodaan, voit lisätä mysqldump-komentoon -t-lipun seuraavasti:
mysqldump -u -p -t -T/path/to/directory
Huomaa, että vaikka MySQL-palvelin ei voi kirjoittaa määrittelemäänsä hakemistoon, *.sql-tiedostot luodaan silti; ainoastaan tekstitiedostoja ei voida luoda.
Tulostusmuodon muuttaminen
Oletusarvoisesti mysqldump, jossa on -T-merkki, dumppaa tiedot tabulaattorilla erotettuihin tiedostoihin. On kuitenkin mahdollista muuttaa erotinmerkkiä ja myös määrittää, että lainausmerkit ympäröivät kenttien arvoja.
Voidaksesi muuttaa erotinmerkkiä käytä --fields-terminated-by=
-lippua kuten seuraavassa esimerkissä. Tässä esimerkissä dumpataan tiedot pilkulla erotettuihin arvoihin eli CSV:ksi:
mysqldump -u -p -t -T/path/to/directory --fields-terminated-by=,
Jos haluat myös laittaa lainausmerkit jokaisen kentän ympärille, käytä --fields-enclosed-by=
-lippua. Alla olevassa esimerkissä jokainen kenttä on ympäröity lainausmerkeillä. Huomaa, että meidän on vältettävä lainausmerkit komentorivillä vinoviivalla.
mysqldump -u -p -t -T/path/to/directory --fields-enclosed-by=" --fields-terminated-by=,
Tuloksena oleva tiedosto näyttäisi seuraavan esimerkin mukaiselta: