ホームページ > データベース > mysql チュートリアル > サーバーへのアップロードを容易にするために、Mysqldump 出力をより小さなファイルに分割するにはどうすればよいですか?

サーバーへのアップロードを容易にするために、Mysqldump 出力をより小さなファイルに分割するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-17 03:06:03
オリジナル
1064 人が閲覧しました

How to Split Mysqldump Outputs into Smaller Files for Easier Server Upload?

サーバーアップロード用に Mysqldump 出力をより小さいファイルに分割する

ある MySQL データベースから別の MySQL データベースにテーブル データを移動しようとすると、ファイル サイズの制限が発生する可能性があります。 mysqldump からの出力がアップロードに許可されているサイズを超える場合は、出力をより小さいファイルに分割する方法が必要です。

解決策の 1 つは、mysqldump で --extended-insert=FALSE オプションを使用することです。これにより、適切な --lines オプションを指定した Split(1) を使用して分割できる .sql ファイルが作成されます。ただし、リモート サーバーで cat(1) を使用できない場合、この方法は実行できません。

あるいは、bash スクリプトを使用してダンプファイルをテーブルごとに個別のファイルに分割することもできます。このスクリプトは、csplit を使用して、テーブル構造やテーブル名などの特定のパターンに基づいてファイルを分割します。

スクリプトの例を次に示します。

#!/bin/bash

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 出力をより小さなファイルに分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート