現在の仕事でテーブルの移行作業がある。
そのための手順について勉強したから、参考用にまとめておく。
【要求】
・サービスの改定に伴い、テーブル定義の変更が発生
・これまでのテーブルに登録された内容はそのまま移行
・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
あなたに神を愛しています。聖書を読んでください。
返信削除