SQLiteでカラム名の変更をする方法

SQLカラム名を変更するには

ALTER TABLE table RENAME COLUMN column_org TO column_new;

とできるが、SQLiteはRENAME COLUMNに対応していない。

カラム名を変更したい場合、以下のように新規にテーブルを作り、既存のテーブルからコピーする

カラム名変更の手順

table_name というテーブル名で、col_a, col_bという名前のカラムを持ったテーブルで、カラム名col_aをcol_a_newに変更する場合を考える。

元となるテーブルをテンポラリのテーブル名に変更する

ALTER TABLE table_name RENAME TO tmp_table_name;

元のテーブル名と変更後のカラム名でテーブルを作成する。

CREATE TABLE table_name (
  col_a_new INT
, col_b INT
);

テンポラリテーブルからコンテンツをコピーする

INSERT INTO orig_table_name(col_a_new, col_b_new)
SELECT col_a_old, col_b_old
FROM tmp_table_name;

古いテーブルを削除する

DROP TABLE tmp_table_name;

ALTER操作によってsqliteファイルに不要な情報が残っているので、最適化する。

VACUUM;

参考ページ

※2011/4/3 VACUUM の記述を追加