Top > SQLite > テーブルのコピー


テーブルのコピー

  • 既存テーブルと同じ構造、データを持つ新しいテーブルを作る
  • バックアップ用途や、全データの入力よりも変更箇所がを UPDATE した方が早い場合などに便利

全く同じテーブルを作成する

  • 現在のテーブル (前回の続き + 見にくいので一部削除)
    sqlite> DELETE FROM t_menu WHERE name LIKE "バナナ%";
    sqlite> DELETE FROM t_menu WHERE name LIKE "%バナナ";
    sqlite> DELETE FROM t_menu WHERE name LIKE "メロン%";
    sqlite> DELETE FROM t_menu WHERE name LIKE "%メロン";
    id    name
    ----  -------------
    1     イチゴミルク
    2     イチゴパフェ
    4     まるごとイチゴ
  • 同じカラム名、データのテーブル作成
構文
CREATE TABLE newテーブル名 AS SELECT * FROM 既存テーブル名
sqlite> CREATE TABLE t_menu_back AS SELECT * t_menu;
sqlite> SELECT * FROM t_menu_back;
id    name
----  -------------
1     イチゴミルク
2     イチゴパフェ
4     まるごとイチゴ
Note

PRIMARY KEY(主キー)を設定している場合、PRIMARY KEY の設定はコピーされません
別途、新たに PRIMARY KEY を指定する必要があります

カラムや条件を指定してコピーする

  • カラムや条件を指定して取り出したレコードを、テーブルに追加する
  • 同じカラム構成であれば、* を使って全カラムのレコードを追加できる
構文
INSERT INTO 追加先テーブル名 SELECT文;
  • t_menu_tmp を作成する
    sqlite> CREATE TABLE t_menu_tmp (name VARCHAR(128));
  • "イチゴ" で始まるレコードを追加する
    sqlite> INSERT INTO t_menu_tmp SELECT name FROM t_menu WHERE name LIKE "イチゴ%";
    sqlite> SELECT * FROM t_menu_tmp;
    name
    -------------
    イチゴミルク
    イチゴパフェ

リロード   凍結解除 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 13 May 2011 00:24:36 JST (2743d)