A mysqldump használata az adatok CSV-fájlokba mentéséhez

, Author

Tegnap a mysqldump alapvető használatát vizsgáltam a MySQL-adatbázisok biztonsági mentéséhez. Ma azt fogom megnézni, hogyan használhatjuk a mysqldumpot a MySQL adatbázis adatainak CSV és tabulátorral elválasztott szövegfájlokba történő dumpolására, ahelyett, hogy SQL beszúrási lekérdezéseket használnánk, ami az alapértelmezett dumpolási módszer.

mysqldump -u -p -T/path/to/directory 

A -u flag a MySQL adatbázis szerverhez való csatlakozáshoz használt felhasználónév megadására szolgál, és a fenti példa részét a saját felhasználónevünkkel kell helyettesíteni.

A -p jelző azt jelzi, hogy az adatbázishoz való csatlakozáshoz jelszót kell megadni; a parancs végrehajtásának megkezdésekor a rendszer kérni fogja a jelszót.

A -T jelzőt követi a könyvtár neve, ahová a MySQL a fájljait írni fogja. A -T és a könyvtárnév eleje között lehet szóköz, vagy szóköz nélkül is: rajtad múlik, mert mindkettő működik. Fontos megjegyezni, hogy a megadott könyvtárnak írhatónak kell lennie a MySQL szerver által használt felhasználó számára. Ha nem az, akkor egy ehhez hasonló hibát fog kapni:

mysqldump: Got error: 1: Can't create/write to file '/path/to/filename.txt' (Errcode: 13) when executing 'SELECT INTO OUTFILE'

Ha a Linux gépén engedélyezve van a SELinux, akkor a könyvtárat a SELinux konfigurációnak is engedélyeznie kell, hogy a MySQL írhasson bele.

A mysqldump által létrehozott fájlok

A fenti példát használva, egy olyan adatbázis esetén, amelynek két táblája van “valami” és “valami_más”, négy fájl jön létre a következőképpen:

  • something.sql – tartalmazza a tábla létrehozásához szükséges SQL-tartalmat. Alapértelmezés szerint a lekérdezés részeként tartalmazza a DROP TABLE IF EXISTS `something`;
  • something.txt – a “something” tábla adatai tabulátorral elválasztott formátumban
  • something_else.sql – tartalmazza a tábla létrehozásához szükséges SQL-et. Alapértelmezés szerint DROP TABLE IF EXISTS `something_else`; szerepel benne a lekérdezés részeként
  • something_else.txt – a “valami_else” tábla adatai tabulátorral elválasztott formátumban

Ha nem szeretné, hogy a *.sql fájlokat létrehozni, akkor a mysqldump parancshoz hozzáadhatja a -t jelzőt a következőképpen:

mysqldump -u -p -t -T/path/to/directory 

Megjegyezzük, hogy még ha a megadott könyvtárba nem is tud írni a MySQL szerver, a *.sql fájlok akkor is létrejönnek; csak a szöveges fájlok nem hozhatók létre.

A kimeneti formátum módosítása

A mysqldump a -T jelzővel alapértelmezés szerint tabulátorral elválasztott fájlokba tölti ki az adatokat. Meg lehet azonban változtatni az elválasztójelet, és azt is meg lehet adni, hogy idézőjelek vegyék körül a mezőértékeket.

Az elválasztójel megváltoztatásához használja a --fields-terminated-by= jelzőt, mint a következő példában. Ebben a példában az adatokat vesszővel elválasztott értékekbe vagy CSV-be fogjuk kiüríteni:

mysqldump -u -p -t -T/path/to/directory --fields-terminated-by=,

Ha azt is szeretné, hogy az egyes mezők körül is idézőjelek legyenek, akkor használja a --fields-enclosed-by= flaget. Az alábbi példában minden mezőt idézőjelek vesznek körül. Vegye figyelembe, hogy a parancssorban az idézőjelet egy slash-szel kell kikerülnünk.

mysqldump -u -p -t -T/path/to/directory --fields-enclosed-by=" --fields-terminated-by=,

A kapott fájl a következő példa szerint nézne ki:

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.