Käyttämällä mysqldumpia tietojen tallentamiseen CSV-tiedostoihin

, Author

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:

Vastaa

Sähköpostiosoitettasi ei julkaista.