SQLiteでテーブルの複製 (CREATE TABLE AS)

2019年5月9日木曜日

SQLite 複製

t f B! P L

SQLiteでテーブルの複製 (CREATE TABLE AS)

SQLiteで、既存のテーブルの列定義と、データをコピーして新しいテーブルを作る場合、CREATE TABLE AS文でテーブル作成すると、簡単にテーブルの複製が作成できて便利です。

SQLiteでテーブルの複製 (CREATE TABLE AS)

テーブルの複製を作成するクエリ

既存のテーブルから列定義とデータをコピーする場合は、以下のようにSQLを書きます。

CREATE TABLE 新テーブル AS SELECT * FROM 元テーブル

列定義だけを複製したい場合

既存のテーブルから、列定義だけを複製した新しいテーブルを作成したいケースもあると思います。そいった場合は、以下のようにSQLを書けば、データがコピーされずに列定義だけが複製されます。

CREATE TABLE 新テーブル AS SELECT * FROM 元テーブル WHERE 1 = 2

WHERE句の条件に1 = 2のような、絶対に条件が不一致になる式を入れることで、新テーブルにレコードが登録されないようにしています。

異なるDB間で複製テーブルを作る場合

SQLiteで別のDB(ファイル)に複製テーブルを作る方法についても紹介します。SQLiteコマンドの、ATTACH DATABASEを使うと、複数のDBに接続する事ができるため、それを利用して複製テーブルを作成していきます。

$ sqlite3.exe dest.db
sqlite> ATTACH DATABASE 'source.db' AS source;
sqlite> .databases
seq  name             file
---  ---------------  ----------------------------------------------------------
0    main             ~/dest.db
2    source           ~/source.db

sqlite> CREATE TABLE main.テーブル名 AS SELECT * FROM source.テーブル名;

さいごに

SQLiteで、既存のテーブルの列定義と、データをコピーする方法につちて紹介してきました。CREATE TABLE AS構文は、気軽にテーブルの複製の作成できて便利ですね!

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ