Lorsque vous essayez de déplacer des données de table d'une base de données MySQL à une autre, des limitations de taille de fichier peuvent survenir. Si la sortie de mysqldump dépasse la taille autorisée pour le téléchargement, une méthode est nécessaire pour diviser la sortie en fichiers plus petits.
Une solution consiste à utiliser l'option --extended-insert=FALSE avec mysqldump. Cela crée un fichier .sql qui peut être divisé en utilisant split(1) avec une option --lines appropriée. Cependant, si cat(1) ne peut pas être utilisé sur le serveur distant, cette méthode devient irréalisable.
Alternativement, un script bash peut être utilisé pour diviser le fichier de vidage en fichiers distincts pour chaque table. Le script utilise csplit pour diviser le fichier en fonction de modèles spécifiques, tels que la structure des tables ou les noms des tables.
Voici un exemple de script :
#!/bin/bash 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*
Ce script suppose que le fichier de vidage d'entrée contient structures et données des tables. Il divise le fichier aux limites de la table et attribue les données de chaque table à un fichier distinct avec le nom de fichier approprié.
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!