Diviser la grande sortie de mysqldump en fichiers plus petits
Il devient nécessaire de transférer des tables d'une base de données à une autre, mais la sortie de vidage de mysqldump est souvent trop volumineux pour certaines limites de téléchargement. Cet article explore une solution intelligente pour diviser la sortie volumineuse de mysqldump en fichiers plus petits et gérables.
Une approche potentielle suggérée par les scripts shell consiste à diviser le dump en fichiers distincts pour chaque table. Ceci peut être réalisé en utilisant la commande csplit et en spécifiant les marqueurs de structure de table comme points de division.
Considérez ce script bash qui utilise cette technique :
#!/bin/bash #### # Split MySQL dump SQL file into one file per table # based on https://gist.github.com/jasny/1608062 #### #adjust this to your case: START="/-- Table structure for table/" # or #START="/DROP TABLE IF EXISTS/" 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 utilise csplit pour diviser le fichier de vidage. dans des fichiers de table individuels, chaque fichier étant nommé d'après la table correspondante. Cela permet un réassemblage facile en un seul fichier ultérieurement. Pour utiliser ce script, fournissez simplement le chemin d'accès au fichier de vidage comme premier argument et spécifiez éventuellement une table spécifique à extraire comme deuxième argument.
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!