大きな 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 中国語 Web サイトの他の関連記事を参照してください。