Maison > base de données > tutoriel mysql > le corps du texte

Comment diviser un gros fichier de vidage MySQL en fichiers plus petits pour dépasser les limites de taille de téléchargement ?

DDD
Libérer: 2024-11-11 20:23:03
original
441 Les gens l'ont consulté

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

Diviser la sortie Mysqldump en fichiers plus petits pour les télécharger sur un serveur distant avec une capacité limitée

La nécessité de transférer des données volumineuses d'une base de données MySQL à une autre Cela se produit souvent, mais des limitations telles que des tailles de téléchargement de fichiers restreintes peuvent constituer un défi. Ceci est particulièrement pertinent lors de l'utilisation de phpMyAdmin, qui autorise uniquement les fichiers .sql compressés de moins de 2 Mo. Heureusement, une solution existe pour surmonter cet obstacle.

Pour résoudre ce problème, la sortie de mysqldump peut être méticuleusement fragmentée en morceaux gérables, permettant de les télécharger sous leurs formes plus petites. Malheureusement, l'utilitaire split(1) ne peut pas être utilisé en raison de l'impossibilité de concaténer les fichiers ensemble sur le serveur distant.

Une solution alternative : fragmenter la sortie de vidage MySQL

Une alternative pratique à split(1) est présentée dans le script bash suivant. Il divise habilement un fichier de vidage de base de données en fichiers .sql individuels, chacun correspondant à une table distincte. Le script exploite csplit, un outil polyvalent pour diviser des fichiers, et utilise stratégiquement START pour identifier les limites des tables.

#!/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*
Copier après la connexion

Cette solution divise méticuleusement le fichier de vidage en fichiers .sql individuels spécifiques à la table, garantissant ainsi un téléchargement réussi vers le serveur distant même avec une capacité de fichiers restreinte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal