Kaedah untuk Memisahkan Output mysqldump Besar kepada Fail Yang Lebih Kecil
Apabila memindahkan jadual MySQL yang besar antara pangkalan data, output mysqldump yang dimampatkan mungkin melebihi fail maksimum saiz yang dibenarkan untuk diimport ke destinasi. Untuk mengatasi cabaran ini, pengguna boleh menggunakan kaedah berikut:
Split Dump File Menggunakan csplit
Skrip bash boleh digunakan untuk memisahkan fail mysqldump kepada fail berasingan untuk setiap meja. Skrip ini memanfaatkan utiliti csplit untuk mencipta fail berdasarkan corak tertentu:
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*
Menggunakan --extended-insert=FALSE dengan mysqldump
Pilihan ini menjana SQL fail yang boleh dibahagikan kepada fail yang boleh diimport. Split boleh digunakan dengan pilihan --lines untuk mengawal bilangan baris setiap fail. Alat percubaan dan ralat atau pemampatan seperti bzip2 boleh digunakan untuk menentukan bilangan baris yang sesuai untuk setiap saiz fail.
Atas ialah kandungan terperinci Bagaimanakah saya boleh membahagikan output mysqldump yang besar kepada fail yang lebih kecil untuk pemindahan dan import yang lebih mudah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!