0

テーブルにインデックスを追加する必要があるため、大きな (80 ミル レコード) MySQL テーブルを別のテーブルにコピーする必要があり、ALTER を使用すると遅すぎるか、RAM が不足します。

画面インスタンスで INSERT INTO table2 SELECT * FROM table1 を含む MySQL スクリプトを実行して、SSH セッションを切断して終了できるようにしましたが、何らかの理由で最初の 2,000 万行を実行しました (数時間かかりました)。そしてランダムに停止しました。この方法は多くのメモリを必要としますか? 他にどのようにこれをバックグラウンドで高速に行うことができますか?

4

1 に答える 1

1

テーブルを .csv ファイルにダンプする

mysqldump -u [username] -p -t -T/path/to/directory/file.txt [database] [table]  --fields-terminated-by=,

適切なスキーマで新しいテーブルを作成します

次に、.csv データを含む新しいテーブルをロードします。

LOAD DATA INFILE '/path/to/directory/file.txt' INTO TABLE database.new_table FIELDS TERMINATED BY ','

参考までに: これらのコマンドはテストされておらず、調整が必要な場合がありますが、アイデアは得られるはずです

于 2013-02-08T23:48:50.360 に答える