Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine große mysqldump-Ausgabe in kleinere Dateien aufteilen, um die Übertragung und den Import zu erleichtern?

Wie kann ich eine große mysqldump-Ausgabe in kleinere Dateien aufteilen, um die Übertragung und den Import zu erleichtern?

DDD
Freigeben: 2024-11-11 19:55:03
Original
591 Leute haben es durchsucht

How can I split a large mysqldump output into smaller files for easier transfer and import?

Methode zum Aufteilen großer mysqldump-Ausgaben in kleinere Dateien

Beim Übertragen großer MySQL-Tabellen zwischen Datenbanken kann die komprimierte mysqldump-Ausgabe die maximale Dateigröße überschreiten Größe, die für den Import in das Ziel zulässig ist. Um diese Herausforderung zu meistern, können Benutzer die folgenden Methoden anwenden:

Dump-Datei mit csplit teilen

Ein Bash-Skript kann verwendet werden, um eine mysqldump-Datei in separate Dateien aufzuteilen jeder Tisch. Dieses Skript nutzt das Dienstprogramm csplit, um Dateien basierend auf bestimmten Mustern zu erstellen:

START="/-- Table structure for table/"

if [ $# -lt 1 ] || [[  == "--help" ]] || [[  == "-h" ]] ; then
        echo "USAGE: extract all tables:"
        echo "  DUMP_FILE"
        echo "extract one table:"
        echo "  DUMP_FILE [TABLE]"
        exit
fi

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

[ $? -eq 0 ] || exit

mv table00 head

FILE=`ls -1 table* | tail -n 1`
if [ $# -ge 2 ] ; then
        # cut off all other tables
        mv $FILE foot
else
        # cut off the end of each file
        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*
Nach dem Login kopieren

Verwenden von --extended-insert=FALSE mit mysqldump

Diese Option generiert eine SQL Datei, die in importierbare Dateien aufgeteilt werden kann. Split kann mit der Option --lines verwendet werden, um die Anzahl der Zeilen pro Datei zu steuern. Mit Trial-and-Error- oder Komprimierungstools wie bzip2 lässt sich für jede Dateigröße die passende Zeilenanzahl ermitteln.

Das obige ist der detaillierte Inhalt vonWie kann ich eine große mysqldump-Ausgabe in kleinere Dateien aufteilen, um die Übertragung und den Import zu erleichtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage