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
構文は、気軽にテーブルの複製の作成できて便利ですね!
0 件のコメント:
コメントを投稿