Cara mengekstrak sandaran jadual dari fail dump mysql penuh

Cara mengekstrak sandaran jadual dari fail dump mysql penuh

Mysqldump adalah utiliti yang disediakan oleh MySQL/MariaDB ke pangkalan data dan jadual sandaran. Umumnya, kami mengambil pangkalan data sepenuhnya dan menyimpannya. Tetapi beberapa kali kita perlu memulihkan satu atau 2-3 jadual dari sandaran. Maka soalan jika bagaimana memulihkan jadual tertentu dari fail sandaran penuh. Artikel ini akan membantu anda untuk mengekstrak sandaran jadual dari fail sandaran pangkalan data penuh. Juga, kita boleh mengekstrak semua sandaran jadual dalam fail individu setiap jadual.

Langkah 1 - Muat turun Skrip Split Mysql Dump

Untuk memisahkan fail sandaran pangkalan data mysqldump penuh dalam sandaran fail spesifik jadual berasingan. Buat fail yang dinamakan splitdb.sh dan salin di bawah skrip di dalamnya.

#!/bin/bash #### # Split mysql dump sql file ke satu fail setiap jadual # berdasarkan http: // blog.tty.NL/2011/12/28/Splitting-A-Database-Dump #### jika [$#-LT 1]; kemudian echo "penggunaan $ 0 dump_file [Table]" keluar fi jika [$# -ge 2]; kemudian csplit -s -ftable $ 1 "/-struktur meja untuk jadual/" "%-struktur meja untuk jadual '$ 2'%" "/-struktur meja untuk jadual/" "%40103 set time_zone =@old_time_zone%1 "lain csplit -s -ftable $ 1"/ -struktur meja untuk jadual/"* fi [$? -eq 0] || Keluar MV Table00 Head File = "LS -1 Jadual* | Tail -n 1" jika [$# -ge 2]; kemudian mv $ file foot else 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' HEAD CAT $ FILE> "$ NAME.
1234567891011121314151617181920212222324252627282930313233343536#!/bin/bash ##### Split mysql dump sql file ke dalam satu fail setiap jadual#berdasarkan http: // blog.tty.NL/2011/12/28/Splitting-A-Database-Dump #### jika [$#-LT 1]; kemudian echo "penggunaan $ 0 dump_file [Table]" exitfi if [$# -ge 2]; kemudian csplit -s -ftable $ 1 "/-struktur meja untuk jadual/" "%-struktur meja untuk jadual '$ 2'%" "/-struktur meja untuk jadual/" "%40103 set [e-mel dilindungi] _time_zone% 1 "lain csplit -s -ftable $ 1"/ -struktur meja untuk jadual/"* fi [$? -eq 0] || Keluar MV Table00 Head File = 'LS -1 Jadual* | ekor -n 1'if [$# -ge 2]; kemudian mv $ file footelse csplit -b '%d' -s -f $ file $ file "/40103 set [e -mel dilindungi] _time_zone/" * mv $ file 1 footfi for file in 'ls -1 Table* '; DO NAME = 'HEAD -N1 $ FILE | CUT -D $ 'X60' -F2 'HEAD CAT $ FILE> "$ NAME.SQL "DONE RM HEAD FOOT TABLE*

Skrip ini diambil dari https: // gist.github.com/jasny/1608062.

Langkah 2 - Ekstrak semua jadual dari pembuangan sampah

mydb.SQL, yang saya mahu berpecah dalam sandaran kecil setiap meja. Untuk ini saya telah membuat direktori baru dan disalin di atas skrip dengan nama splitdb.sh . Sekarang gunakan arahan berikut untuk mengekstrak semua jadual dalam fail sandaran individu.

CD /OPT /SPLITDB CHMOD +X SPLITDB.sh ./splitdb.sh mydb.sql #do tidak lari dengan arahan 'sh'  

Langkah 3 - Ekstrak Jadual Tunggal dari Dump

Sekiranya kita mahu mengekstrak hanya satu jadual, kita boleh menggunakan arahan seperti di bawah. Contohnya saya mahu berpecah hanya jadual yang dinamakan my_tbl1 dan my_tbl2. ia akan mengeluarkan sandaran dalam direktori semasa dengan nama my_tbl1.SQL dan my_tbl2.SQL.

CD /OPT /SPLITDB CHMOD +X SPLITDB.SH SH SPLITDB.sh mydb.sql my_tbl1 sh splitdb.sh mydb.SQL MY_TBL2