首頁 > 資料庫 > mysql教程 > 如何將大型 mysqldump 輸出拆分為較小的檔案以便於傳輸和匯入?

如何將大型 mysqldump 輸出拆分為較小的檔案以便於傳輸和匯入?

DDD
發布: 2024-11-11 19:55:03
原創
592 人瀏覽過

How can I split a large mysqldump output into smaller files for easier transfer and import?

將大型mysqldump 輸出拆分為較小檔案的方法

在資料庫之間傳輸大型MySQL 表時,壓縮的mysqldump 輸出可能會超過最大檔案數允許匯入到目的地的大小。為了克服這項挑戰,使用者可以採用以下方法:

使用csplit 分割轉儲檔案

bash 腳本可用於將mysqldump 檔案拆分為單獨的文件每張桌子。此腳本利用csplit 實用程式根據特定模式建立檔案:

START="/-- Table structure for table/"

if [ $# -lt 1 ] || [[  == "--help" ]] || [[  == "-h" ]] ; then
        echo "USAGE: extract all tables:"
        echo "  DUMP_FILE"
        echo "extract one table:"
        echo "  DUMP_FILE [TABLE]"
        exit
fi

if [ $# -ge 2 ] ; then
        #extract one table 
        csplit -s -ftable  "/-- Table structure for table/" "%-- Table structure for table \`\`%" "/-- Table structure for table/" "%40103 SET TIME_ZONE=@OLD_TIME_ZONE%1"
else
        #extract all tables
        csplit -s -ftable  "$START" {*}
fi

[ $? -eq 0 ] || exit

mv table00 head

FILE=`ls -1 table* | tail -n 1`
if [ $# -ge 2 ] ; then
        # cut off all other tables
        mv $FILE foot
else
        # cut off the end of each file
        csplit -b '%d' -s -f$FILE $FILE "/40103 SET TIME_ZONE=@OLD_TIME_ZONE/" {*}
        mv ${FILE}1 foot
fi

for FILE in `ls -1 table*`; do
        NAME=`head -n1 $FILE | cut -d$'\x60' -f2`
        cat head $FILE foot > "$NAME.sql"
done

rm head foot table*
登入後複製

在mysqldump 中使用--extended-insert=FALSE

此選項產生SQL可以拆分為可導入文件的文件。 Split 可以與 --lines 選項一起使用來控制每個檔案的行數。可以使用試誤或壓縮工具(例如 bzip2)來確定每個檔案大小的適當行數。

以上是如何將大型 mysqldump 輸出拆分為較小的檔案以便於傳輸和匯入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板