Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Output Mysqldump kepada Fail yang Lebih Kecil untuk Muat Naik Pelayan Lebih Mudah?
Apabila cuba mengalihkan data jadual dari satu pangkalan data MySQL ke pangkalan data yang lain, had dalam saiz fail mungkin berlaku. Jika output daripada mysqldump melebihi saiz yang dibenarkan untuk muat naik, kaedah diperlukan untuk membahagikan output kepada fail yang lebih kecil.
Satu penyelesaian melibatkan penggunaan pilihan --extended-insert=FALSE dengan mysqldump. Ini mencipta fail .sql yang boleh dipecah menggunakan split(1) dengan pilihan --lines yang sesuai. Walau bagaimanapun, jika cat(1) tidak boleh digunakan pada pelayan jauh, kaedah ini menjadi tidak boleh dilaksanakan.
Sebagai alternatif, skrip bash boleh digunakan untuk memisahkan fail dump kepada fail berasingan untuk setiap jadual. Skrip menggunakan csplit untuk membahagikan fail berdasarkan corak tertentu, seperti struktur jadual atau nama jadual.
Berikut ialah skrip contoh:
#!/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*
Skrip ini menganggap bahawa fail dump input mengandungi struktur jadual dan data. Ia membahagikan fail pada sempadan jadual dan memperuntukkan setiap data jadual kepada fail berasingan dengan nama fail yang sesuai.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Output Mysqldump kepada Fail yang Lebih Kecil untuk Muat Naik Pelayan Lebih Mudah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!