【SQLレシピ】同じデザイン(構造)のテーブルに全てのレコードを楽にコピーする
2023-8-1 | SQL
SQLで同じデザインのテーブルに全てのレコードを楽にコピーしたい!
概要
この記事では、SQLで同じデザインのテーブルに全てのレコードを楽にコピーする手順を掲載する。
ちょー大量のレコードを持ったテーブルが激重になったのを一時しのぎする時とかに、ね。(白目)
仕様書
環境
- SQLite 3.35.5
- SQL Server 15.0.2000
手順書
同じテザイン(構造)を持つコピー元のsrc_table
テーブルとコピー先dist_table
テーブルのレコードを全てコピーする例。
INSERT INTO dist_table SELECT * FROM src_table;
重複するユニークIDを持つレコードはコピーに失敗する。
コピー前にコピー先のテーブルを空にして良いなら、空にした後にコピーすることで重複するユニークIDの問題を回避できる。
TRUNCATE TABLE dist_table;
INSERT INTO dist_table SELECT * FROM src_table;
コピー先にユニークIDがあったら更新、無かったらレコードを追加したい場合はMARGE
かIF @@ROWCOUNT=0
を使うんだけども、列名を列挙しなきゃならないんでめんどい。これはこれで別の記事にする予定。
まとめ(感想文)
テーブルにレコードが増えてくると重くなってく。JOIN
が多いと指数関数的に重くなってく…。