アップロード サイズの制限を超えるために、大きな MySQL ダンプ ファイルを小さなファイルに分割するにはどうすればよいですか?

DDD
リリース: 2024-11-11 20:23:03
オリジナル
441 人が閲覧しました

How do I split a large MySQL dump file into smaller files to overcome upload size limits?

容量が制限されたリモート サーバーにアップロードするために、Mysqldump 出力をより小さいファイルに分割する

ある MySQL データベースから別の MySQL データベースに大量のデータを転送する必要性という問題が頻繁に発生しますが、ファイルのアップロード サイズの制限などの制限が問題を引き起こす可能性があります。これは、2MB 未満の圧縮 .sql ファイルのみを許可する phpMyAdmin を使用する場合に特に関係します。幸いなことに、この障害を克服するソリューションが存在します。

この問題を解決するには、mysqldump の出力を細心の注意を払って管理可能なチャンクに断片化し、小さな形式でアップロードできるようにします。残念ながら、リモート サーバー上でファイルを連結できないため、split(1) ユーティリティは使用できません。

代替ソリューション: MySQL ダンプ出力の断片化

split(1) の実用的な代替手段は、次の bash スクリプトで紹介されています。データベース ダンプ ファイルを個別の .sql ファイルに巧みに分割し、それぞれが個別のテーブルに対応します。このスクリプトは、ファイルを分割するための多用途ツールである csplit を活用し、START を戦略的に使用してテーブル境界を特定します。

#!/bin/bash

# Adjust this to your specific scenario:
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 a specific 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*
ログイン後にコピー

このソリューションは、ダンプ ファイルを細心の注意を払って個別のテーブル固有の .sql ファイルに分割し、確実に正常にアップロードできるようにします。ファイル容量が制限されていても、リモート サーバーにアクセスできます。

以上がアップロード サイズの制限を超えるために、大きな MySQL ダンプ ファイルを小さなファイルに分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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