Méthode pour diviser une grande sortie mysqldump en fichiers plus petits
Lors du transfert de grandes tables MySQL entre bases de données, la sortie compressée de mysqldump peut dépasser le fichier maximum taille autorisée pour l’importation dans la destination. Pour surmonter ce défi, les utilisateurs peuvent utiliser les méthodes suivantes :
Diviser le fichier de vidage à l'aide de csplit
Un script bash peut être utilisé pour diviser un fichier mysqldump en fichiers séparés pour chaque tableau. Ce script exploite l'utilitaire csplit pour créer des fichiers basés sur des modèles spécifiques :
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*
Utilisation de --extended-insert=FALSE avec mysqldump
Cette option génère un SQL fichier qui peut être divisé en fichiers importables. Split peut être utilisé avec l'option --lines pour contrôler le nombre de lignes par fichier. Des essais et erreurs ou des outils de compression tels que bzip2 peuvent être utilisés pour déterminer le nombre de lignes approprié pour chaque taille de fichier.
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!