概要
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
-
Command Line Shell For SQLite
公式のコマンドラインツールに関するドキュメント
https://www.sqlite.org/cli.html
-
あさはか備忘録: SQLite 3 コマンドの実行結果の出力先を変更する「.once」について
https://sfnovicenotes.blogspot.com/2019/10/sqlite3-once.html