將大型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中文網其他相關文章!