Heim > Datenbank > MySQL-Tutorial > Wie teile ich eine große MySQL-Dump-Datei in kleinere Dateien auf, um die Größenbeschränkungen beim Hochladen zu überwinden?

Wie teile ich eine große MySQL-Dump-Datei in kleinere Dateien auf, um die Größenbeschränkungen beim Hochladen zu überwinden?

DDD
Freigeben: 2024-11-11 20:23:03
Original
521 Leute haben es durchsucht

How do I split a large MySQL dump file into smaller files to overcome upload size limits?

Aufteilen der Mysqldump-Ausgabe in kleinere Dateien zum Hochladen auf einen Remote-Server mit begrenzter Kapazität

Die Notwendigkeit, umfangreiche Daten von einer MySQL-Datenbank in eine andere zu übertragen kommt häufig vor, aber Einschränkungen wie eingeschränkte Datei-Upload-Größen können eine Herausforderung darstellen. Dies ist besonders wichtig, wenn Sie phpMyAdmin verwenden, das nur komprimierte .sql-Dateien zulässt, die kleiner als 2 MB sind. Glücklicherweise gibt es eine Lösung, um dieses Hindernis zu überwinden.

Um dieses Problem zu lösen, kann die Ausgabe von mysqldump sorgfältig in überschaubare Teile fragmentiert werden, sodass sie in ihrer kleineren Form hochgeladen werden können. Leider kann das Dienstprogramm split(1) nicht verwendet werden, da die Dateien auf dem Remote-Server nicht wieder zusammengefügt werden können.

Eine alternative Lösung: Fragmentierung der MySQL-Dump-Ausgabe

Eine praktische Alternative zu split(1) wird im folgenden Bash-Skript vorgestellt. Es teilt eine Datenbank-Dump-Datei geschickt in einzelne .sql-Dateien auf, die jeweils einer bestimmten Tabelle entsprechen. Das Skript nutzt csplit, ein vielseitiges Tool zum Aufteilen von Dateien, und setzt START strategisch ein, um Tabellengrenzen zu identifizieren.

#!/bin/bash

# Adjust this to your specific scenario:
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 a specific 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

Diese Lösung teilt die Dump-Datei sorgfältig in einzelne tabellenspezifische .sql-Dateien auf und gewährleistet so ein erfolgreiches Hochladen auf den Remote-Server auch bei eingeschränkter Dateikapazität.

Das obige ist der detaillierte Inhalt vonWie teile ich eine große MySQL-Dump-Datei in kleinere Dateien auf, um die Größenbeschränkungen beim Hochladen zu überwinden?. 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