首頁  >  文章  >  資料庫  >  如何在事先不知道表名的情況下自動將 MySQL 表轉儲到單獨的檔案中?

如何在事先不知道表名的情況下自動將 MySQL 表轉儲到單獨的檔案中?

Linda Hamilton
Linda Hamilton原創
2024-10-30 15:19:03188瀏覽

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

自動將MySQL 表轉儲到單獨的檔案

Mysqldump 提供了一種將MySQL 表格轉儲到單獨檔案的便捷方法。然而,事先知道表名是一個限制。為了解決這個問題,有其他方法可以自動轉儲每個表。

基於腳本的方法:

透過利用 script-fu,您可以查詢資料庫以檢索所有表名並建立執行轉儲的腳本。以下是一些能夠存取MySQL 資料庫的腳本語言:

  • 使用mysql-connector 或sqlalchemy 的Python
  • 使用PDO 或mysqli 的PHP
  • 使用JDBC 或JPA 的Java

自包含的Bash 腳本:

提供的Bash 腳本進一步簡化了流程,無需額外的腳本知識:

<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>
該腳本提示輸入資料庫密碼,將每個表的資料轉儲到單獨的壓縮SQL 檔案中,並將它們儲存在指定目錄中。它處理所有必要的步驟,從檢索表名到建立轉儲檔案。

以上是如何在事先不知道表名的情況下自動將 MySQL 表轉儲到單獨的檔案中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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