Rumah > pangkalan data > tutorial mysql > Bagaimanakah saya boleh membahagikan output mysqldump yang besar kepada fail yang lebih kecil untuk pemindahan dan import yang lebih mudah?

Bagaimanakah saya boleh membahagikan output mysqldump yang besar kepada fail yang lebih kecil untuk pemindahan dan import yang lebih mudah?

DDD
Lepaskan: 2024-11-11 19:55:03
asal
592 orang telah melayarinya

How can I split a large mysqldump output into smaller files for easier transfer and import?

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*
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan