mysql dump file split

Hogy lehet mysql dump file-ból kinyerni a táblák adatait?

Időnként előfordul, hogy egy teljes MySQL adatbázis mentéséből (mysql dump fileból) csak néhány táblát szeretnénk helyre állítani. Erre a problémára nyújt remek megoldást az alábbi script.

A MySQL adatbázisok mentése viszonylag egyszerű, az alábbi paranccsal gyorsan megoldható:

mysqldump -u -p mydatabase  > mydb.sql

Táblákat is elmenthetünk külön-külön:

mysqldump -u -p mydatabase table1 > table1.sql

 

Azonban ha csak teljes adatbázis mentésünk van, de mégis táblánként szükséges a visszaállítás, akkor ezt a scriptet lefuttatva ki tudjuk nyerni a teljes mysql dumpból a táblák SQL-ét:

#!/bin/bash

####
# Split MySQL dump SQL file into one file per table
# based on http://blog.tty.nl/2011/12/28/splitting-a-database-dump
####

if [ $# -lt 1 ] ; then
echo "USAGE $0 DUMP_FILE [TABLE]"
exit
fi

if [ $# -ge 2 ] ; then
csplit -s -ftable $1 "/-- Table structure for table/" "%-- Table structure for table \`$2\`%" "/-- Table structure for table/" "%40103 SET TIME_ZONE=@OLD_TIME_ZONE%1"
else
csplit -s -ftable $1 "/-- Table structure for table/" {*}
fi

[ $? -eq 0 ] || exit

mv table00 head

FILE=`ls -1 table* | tail -n 1`
if [ $# -ge 2 ] ; then
mv $FILE foot
else
csplit -b '%d' -s -f$FILE $FILE "/40103 SET TIME_ZONE=@OLD_TIME_ZONE/" {*}
mv ${FILE}1 foot
fi

for FILE in `ls -1 table*`; do
NAME=`head -n1 $FILE | cut -d$'\x60' -f2`
cat head $FILE foot > "$NAME.sql"
done

rm head foot table*



Mennyire volt hasznos ez a bejegyzés?

Kattints egy csillagra az értékeléshez!

Átlagos értékelés / 5. Szavazatszám:

Hozzászólás

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Scroll to top