Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Saya Boleh Mengautomasikan Lambakan Jadual MySQL ke dalam Fail Berasingan?

Bagaimanakah Saya Boleh Mengautomasikan Lambakan Jadual MySQL ke dalam Fail Berasingan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 04:46:02620semak imbas

How Can I Automate Dumping MySQL Tables into Separate Files?

Membuang Jadual MySQL untuk Mengasingkan Fail Secara Automatik

Utiliti mysqldump terbina dalam membenarkan pembuangan jadual terpilih, tetapi memerlukan nama jadual yang telah ditetapkan . Untuk pendekatan dinamik yang mengendalikan penambahan jadual baharu, penyelesaian automatik diperlukan.

Salah satu penyelesaian sedemikian ialah skrip shell yang menanya secara dinamik pangkalan data untuk semua nama jadual dan membuang setiap jadual ke dalam fail termampat yang berasingan. Ini menghapuskan keperluan untuk penyelenggaraan nama jadual manual dalam skrip dump.

Berikut ialah skrip contoh yang mencapai fungsi ini:

<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.
# Author: @Trutane

[ $# -lt 3 ] && echo "Usage: $(basename ) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1

DB_host=
DB_user=
DB=
DIR=${4:-.}

[ -d $DIR ] || mkdir -p $DIR

echo -n "DB password: "
read -s DB_pass

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, menanyakan pangkalan data yang ditentukan untuk nama jadual dan membuang setiap data jadual sebagai arahan SQL ke dalam fail termampat individu dalam direktori yang ditentukan (atau direktori kerja semasa secara lalai).

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengautomasikan Lambakan Jadual MySQL ke dalam Fail Berasingan?. 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