• ベストアンサー

ダンプファイルから特定のテーブルのみインポート

データベース丸ごとmysqldumpでダンプしたファイルからリストアを行う際に、特定のテーブルのみインポートする方法はありますでしょうか。 ダンプファイルを開いて地道に編集すれば良いのでしょうが、ダンプファイルが1Gほどあるので、とてもできません。 その中の100M程のデータを得るために、いつも数時間かかっています・・・。

質問者が選んだベストアンサー

  • ベストアンサー
noname#98692
noname#98692
回答No.2

シェルスクリプトか何かを使ってファイルを分割するか、前の方が答えられてるように、一度別のDBに突っ込んでしまうか。 ただ "いつも数時間かかっています" とあるので、定期的に行っている作業なのであれば、dump を書き出すときにテーブルを指定したほうが早いかもしれません。 ファイルに書き出さないで直接ぶちこむ手もあります。 mysqldump --user=neko \ --disable-keys \ --extended-insert \ --default-character-set=binary \ ←環境による --complete-insert \ --no-create-info \ --no-create-db \ --order-by-primary \ ←お好みで --quick \ --compress \ ・・・お好みのオプション DB名 \ テーブル名1 \ テーブル名2 \ ・・・ | mysql --host=転送先 --user=neko -C 転送先DB名 これだと一度ファイルに書き出すよりもかなり早く終わると思います。

参考URL:
http://dev.mysql.com/doc/refman/5.1/ja/mysqldump.html
cyanberry
質問者

お礼

回答ありがとうございます。 これからやる分に関してはテーブルごとにダンプという対応ができますが、既にあるダンプファイルに関しては、やはり一度全部インポートするしかなさそうですね。 直接DBにダンプを放り込む方法参考になりました。

その他の回答 (1)

  • kyart
  • ベストアンサー率57% (8/14)
回答No.1

一度ローカルのMySQLにデータベースを作ってそこにそのダンプファイルを全部放り込んで、改めてそこから必要なテーブルのダンプファイルを作ってみてはいかがでしょう?

cyanberry
質問者

お礼

回答ありがとうございます。 「一度ローカルのMySQLにデータベースを作ってそこにそのダンプファイルを全部放り込んで」の作業に現在数時間かかっているので、それをもっと速くする方法はないものかと思っておりまして・・・。