POSTGRES:カラムの型変換

images (1)

POSTGRES公式サイトを参照にテーブルのカラムの型を変更してみました。

現状のテーブル構成
ID(serial)	category(character varying)
1		10
2		12
3		3

変更後のテーブル構成
ID(serial)	category(integer)
1		10
2		12
3		3

正しいやり方:

alter table t1 alter column category type integer;

すると、下記エラーメッセージが出力されます。

ERROR:  列"category"を型"integer"にキャストできません

********** エラー **********

ERROR: 列"category"を型"integer"にキャストできません
SQLステート:42804

キャストできないようですでの、別のやり方でやってみましょう

--仮カラムを作成
alter table t1 add column new_category integer;

--仮カラムにキャストされたcategory値を挿入
update t1 set new_category = cast(category as integer);

--元のcategoryカラムを削除
alter table t1 drop column category;

--新しくカラムを作成
alter table t1 add column category integer;

--仮カラムの値を挿入
update t1 set category = new_category;

--仮カラムを削除
alter table t1 drop column new_category;

うまく型変換できました!・・・・以上 !

by johann

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中