Mengautomasikan Lambakan Jadual Pangkalan Data untuk MySQL
MySQL menawarkan kaedah mudah untuk membuang data jadual ke dalam fail individu, yang boleh berguna untuk tujuan sandaran . Walau bagaimanapun, menyatakan secara manual setiap nama jadual dalam arahan dump menjadi tidak praktikal dalam persekitaran dinamik di mana bilangan jadual boleh berubah dari semasa ke semasa. Artikel ini meneroka penyelesaian untuk mengautomasikan proses lambakan, memastikan semua jadual sedia ada ditangkap dalam fail yang berasingan.
Lambakan Automatik
Manakala sintaks lalai MySQL memerlukan pengetahuan tentang jadual nama terlebih dahulu, tiada arahan langsung untuk membuang semua jadual secara automatik. Walau bagaimanapun, gabungan arahan dan skrip boleh menyelesaikan tugasan ini.
Pendekatan Skrip-fu
Satu pendekatan melibatkan mencipta skrip yang menanyakan pangkalan data untuk mendapatkan semula semua nama jadual . Selepas itu, ia boleh mengulangi senarai dan membuang setiap jadual secara individu. Pelbagai bahasa skrip boleh mengakses pangkalan data MySQL, termasuk Python, Perl dan PHP.
Contoh Skrip Bash
Di bawah ialah contoh skrip Bash yang membuang data jadual sebagai arahan SQL ke dalam fail termampat yang berasingan:
<code class="bash">#!/bin/bash # Descr: Dump MySQL table data into separate SQL files for a specified database. # Usage: Run without args for usage info. [ $# -lt 3 ] && echo "Usage: $(basename ) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1 DB_host= DB_user= DB= DIR= [ -n "$DIR" ] || DIR=. test -d $DIR || mkdir -p $DIR echo -n "DB password: " read -s DB_pass echo echo "Dumping tables into separate SQL command files for database '$DB' into dir=$DIR" tbl_count=0 for t in $(mysql -NBA -h $DB_host -u $DB_user -p$DB_pass -D $DB -e 'show tables') do echo "DUMPING TABLE: $DB.$t" mysqldump -h $DB_host -u $DB_user -p$DB_pass $DB $t | gzip > $DIR/$DB.$t.sql.gz tbl_count=$(( tbl_count + 1 )) done echo "$tbl_count tables dumped from database '$DB' into dir=$DIR"</code>
Penggunaan dan Faedah
Skrip ini menggesa kata laluan pangkalan data dan membuang data ke dalam fail termampat dalam direktori yang ditentukan. Ia menghapuskan keperluan untuk mengemas kini skrip dump secara manual apabila jadual baharu ditambah. Selain itu, ia boleh diperluaskan dengan mudah untuk membuang berbilang pangkalan data dengan menyediakan senarai nama pangkalan data yang dipisahkan koma sebagai hujah ketiga.
Atas ialah kandungan terperinci Bagaimana untuk mengautomasikan Lambakan Jadual Pangkalan Data dalam MySQL Tanpa Menentukan Nama Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!