同じデータベース内に同じ列構造のテーブルが2つあります:TableA
とTableB
です。同じデータベース内のあるテーブルから別のテーブルに大量のデータをコピーするにはどうすればよいですか?
TableA
にはインデックスがありませんが、TableB
にはクラスタ化されていないユニークインデックスがあります。
TableA
は、2930万行のデータをTableB
にコピーする必要があります。どちらも同じ構造を持っていたよう
が、私は
INSERT INTO TableB
SELECT *
FROM TableA;
を試してみたそれは時間を実行してディスクを満たした巨大なログファイルを生成しました。その結果、ディスクの空き領域がなくなり、クエリが強制終了されました。
ログファイルを縮小できます。これらの多くの行のデータを別のテーブルに効率的にコピーするにはどうすればよいですか?
これをチェックすると役立つことがあります。 http://dba.stackexchange.com/questions/99367/insert-into-table-select-from-table-vs-bulk-insert –
2億9,000万行をコピーするには、これを分割したいと思うでしょう。各行にどれくらいのデータがあるかはわかりませんが、1つのステートメントでこれを行うと、エラーがあればロールバックできるようにすべてのデータをログに記録する必要があります。これをチャンクに分割するかBulkInsertを使用すると、トランザクションごとにあまりデータを必要としないため、ログの負荷を軽減できます。 –
プライマリキー列を持っていますか?そうであればどのデータ型ですか? –