2021年3月13日土曜日

SQLite3 selectの結果からinsert文を作る

概要

select文で取得した結果を別のテーブルやデータベースに挿入するためのSQLを作成する。

SQLite コマンドラインツールで「.mode insert」を使えば簡単に実現できる。


sqlite> .mode insert  
                

SQLite内でselectした結果をinsertする場合は「insert~select」構文を使えばいいので、

OracleやMySQLなどの他のデータベースにデータを移行する場合に利用する。

insert文はシンプルなので互換性の問題も起こりにくい。

実行例

実行環境
  • Windows 10 64bit
  • SQLite3 (3.34.1) Command-Line Shell

出力したinsert文を再利用する場合は"table"の部分を書き換えること。


sqlite> .mode box
sqlite> select * from user;
┌────┬────────┬────────────────────┐
│ id │  name  │        mail        │
├────┼────────┼────────────────────┤
│ 1  │ admin  │ admin@example.com  │
│ 2  │ sales1 │ sales1@example.com │
└────┴────────┴────────────────────┘
sqlite> .mode insert
sqlite> select * from user;
INSERT INTO "table" VALUES(1,'admin','admin@example.com');
INSERT INTO "table" VALUES(2,'sales1','sales1@example.com');
                

selectの件数が多ければ 「.once」 コマンドでテキストファイルに出力してしまえばいい。


sqlite> .once insert.sql
sqlite> select * from user;
sqlite> 
                

insert.sql


INSERT INTO "table" VALUES(1,'admin','admin@example.com');
INSERT INTO "table" VALUES(2,'sales1','sales1@example.com');
                

参考URL