Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh membuang jadual MySQL secara automatik ke dalam fail berasingan tanpa mengetahui nama jadual terlebih dahulu?

Bagaimanakah saya boleh membuang jadual MySQL secara automatik ke dalam fail berasingan tanpa mengetahui nama jadual terlebih dahulu?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 15:19:03279semak imbas

How can I automatically dump MySQL tables into separate files without knowing table names beforehand?

Mengautomatikkan Lambakan Jadual MySQL ke dalam Fail Berasingan

Mysqldump menawarkan cara yang mudah untuk membuang jadual MySQL ke dalam fail individu. Walau bagaimanapun, mengetahui nama jadual terlebih dahulu adalah satu had. Untuk menangani perkara ini, terdapat pendekatan alternatif untuk membuang setiap jadual secara automatik.

Pendekatan Berasaskan Skrip:

Dengan memanfaatkan skrip-fu, anda boleh menanyakan pangkalan data untuk mendapatkan semula semua nama jadual dan buat skrip yang melakukan pembuangan. Berikut ialah beberapa bahasa skrip yang mampu mengakses pangkalan data MySQL:

  • Python dengan mysql-connector atau sqlalchemy
  • PHP dengan PDO atau mysqli
  • Ruby dengan mysql2
  • Java dengan JDBC atau JPA

Skrip Bash Sendiri:

Skrip Bash yang disediakan menyelaraskan proses selanjutnya, menghapuskan keperluan untuk skrip tambahan pengetahuan:

<code class="bash">#!/bin/bash

# dump-tables-mysql.sh
[ $# -lt 3 ] && echo "Usage:  <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1

DB_host=
DB_user=
DB=
DIR=

[ -n "$DIR" ] || DIR=.
test -d $DIR || mkdir -p $DIR

read -sp "DB password: " 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>

Skrip ini menggesa kata laluan pangkalan data, membuang setiap data jadual ke dalam fail SQL termampat yang berasingan dan menyimpannya dalam direktori yang ditentukan. Ia mengendalikan semua langkah yang diperlukan, daripada mendapatkan semula nama jadual kepada mencipta fail dump.

Atas ialah kandungan terperinci Bagaimanakah saya boleh membuang jadual MySQL secara automatik ke dalam fail berasingan tanpa mengetahui nama jadual terlebih dahulu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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