首頁  >  文章  >  資料庫  >  如何在MySQL中自動轉儲資料庫表而不指定表名?

如何在MySQL中自動轉儲資料庫表而不指定表名?

Linda Hamilton
Linda Hamilton原創
2024-10-26 19:33:29691瀏覽

How to Automate Database Table Dumping in MySQL Without Specifying Table Names?

MySQL 自動化資料庫表轉儲

MySQL 提供了一種將表格資料​​轉儲到單一檔案的便捷方法,這對於備份目的非常有用。但是,在表格數量可能隨時間變化的動態環境中,在轉儲命令中手動指定每個表名稱變得不切實際。本文探討了一種自動化轉儲過程的解決方案,確保所有現有表都捕獲在單獨的文件中。

Automagic Dumping

雖然 MySQL 的預設語法需要了解表格預先命名,沒有直接命令自動轉儲所有表。但是,命令和腳本的組合可以完成此任務。

Script-fu 方法

一種方法涉及建立一個腳本來查詢資料庫以檢索所有表格名稱。隨後,它可以迭代列表並單獨轉儲每個表。各種腳本語言都可以存取 MySQL 資料庫,包括 Python、Perl 和 PHP。

範例Bash 腳本

以下是將表格資料​​轉儲為SQL 指令的範例Bash 腳本分成單獨的壓縮檔案:

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

用法和好處

此腳本提示輸入資料庫密碼並將資料轉儲到指定目錄中的壓縮檔案中。新增表格時,無需手動更新轉儲腳本。此外,透過提供以逗號分隔的資料庫名稱清單作為第三個參數,可以輕鬆擴展它以轉儲多個資料庫。

以上是如何在MySQL中自動轉儲資料庫表而不指定表名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn