12/12/2010

【DB】テーブルの移行

現在の仕事でテーブルの移行作業がある。
そのための手順について勉強したから、参考用にまとめておく。

【要求】
・サービスの改定に伴い、テーブル定義の変更が発生
・これまでのテーブルに登録された内容はそのまま移行
・ALTER TABLEの使用禁止
・追加するカラムには、定数が入る

【テスト環境】
・OS:Windows Vista
・RDBMS:SQLite3

【手順】
1.現在のテーブルのバックアップテーブルを作成する
 create table BackUpTable as select * from OriginalTable;

2.現在のテーブルを削除する
 drop table OriginalTable;

3.新しいテーブルを作成する
 create table NewTable(カラム名 属性, 追加カラム名 属性, ...);

4.バックアップテーブルから新しいテーブルにレコードをコピー
 insert into NewTable
  as select カラム名, 追加カラム名の値, ...
  from BackUpTable;


以上で移行ができるはず。
だけど、DBMSによって、SQL文に修正が必要かもしれない。
あと、SQLiteは型の制約がないから簡単にできたけど、他がどうかは分からない。
まず、実環境と同じ環境でテストし、動作確認が必要だな。

参考URL:
・テーブルデータの移行 - Database Expert - @IT
 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=40910&forum=26

1 件のコメント:

  1. あなたに神を愛しています。聖書を読んでください。

    返信削除