2011-01-17 6 views
0

小さなテーブルに分割したいmysqlテーブルがあります。私は、1 - 199と200 - 299のような範囲のデータを分割して新しいテーブルに入れたいと思います。どのように私はmysqlのコマンドラインツールからこれを行うに行くだろうか?mysqlコマンドラインツールを使用して大きなテーブルを複数の小さなテーブルに分割するにはどうすればよいですか?

+0

興味のある方、*どうしてこのようにしたいですか? –

+0

表は、製品と一致するプロファイル番号のリストです。私のケースでは、0 - 199はケーシング(木材トリム)プロファイル、200 - 299はベースプロファイルなどです。だから私は、各カテゴリーがそれ自身のテーブルを持つ方が良いと思います。毎回テーブル全体を読み込むのではなく、私が望むのはテーブルだけです。あなたの考え? – gregh

+0

@ ghostz00関連するさまざまなスキーマの詳細を知らなくても知りません。しかし、既存のテーブルは関連性のないアイテム(つまり、ケーシング!=ベースプロファイル?)を格納するために使用されていると言っているので、あなたは物事の壮大なスキームで正しいこと™をしているように思えます。 :-) –

答えて

0

これを達成する最も簡単な方法は、単にmysqldumpを使用して既存のテーブルのスキーマとデータをエクスポートすることです。 ( "--complete-insert"オプションの使用をお勧めします)

関連するテーブル作成ステートメントを追加し、適切なテーブル名を使用するようにINSERT行を編集することで、結果ファイルを手動で編集できます。

ところで:

それは、関連する編集を行っている間、元のテーブルに追加されているデータの用心しない場合がありますけれども
  1. など

  2. は、このすべてが聞こえる場合それはそうであるからです。しかし、ここではかなり奇妙な要求があります。

0

最大範囲外の図は、それはしかし、このをしない10000

for i in $(seq 0 100 10000) ; do 
    echo "create table Table$i like MyTable" | mysql mydb 
    echo "insert into Table$i select * from MyTable where id >=$i and id < $(($i+100))" | mysql mydb 
done 

だと言います。このようなデータを分割する理由はほとんどなく、より質の高いクエリの作成、管理の難易度の向上、データベース/アプリケーションのメンテナンスを行っている者は最終的には狂ってしまうでしょう。