【SQLレシピ】同じデザイン(構造)のテーブルに全てのレコードを楽にコピーする

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【SQLレシピ】同じデザイン(構造)のテーブルに全てのレコードを楽にコピーする

2023-8-1 |

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があったら更新、無かったらレコードを追加したい場合はMARGEIF @@ROWCOUNT=0を使うんだけども、列名を列挙しなきゃならないんでめんどい。これはこれで別の記事にする予定。

まとめ(感想文)

テーブルにレコードが増えてくると重くなってく。JOINが多いと指数関数的に重くなってく…。