Redshift既存テーブルへの操作:置換、カラム追加、データ型変換、値追加
テーブルコピー
置換したいが既存のものをダイレクトに置換して失敗すると怖いからまずはテーブルコピーしたい。
SELECT * INTO <コピー先テーブル名> FROM <コピー元テーブル名>
置換
コピーしたテーブルにやりたい置換をかける。
UPDATE <テーブル名> SET <カラム名>=REPLACE(<カラム名>,"置換対象","置換後の文字");
カラム追加
またはカラム追加したい場合もある。
ALTER TABLE <テーブル名> ADD <カラム名> <データ型> <NULL or NOT NULL>;
データ更新(値追加したり)
UPDATE <テーブル名> SET <カラム名>=値, [カラム名=値, ...] [WHERE 条件式] [ORDER BY ...] [LIMIT 値]
データ型変換
値変換したらデータ型も変換したいときもある。
redshiftだとalter columnがサポートされてなかったので、まずカラム追加してから変換する方法しかわからなかった。
追加方法はすでに記載の通り。
update <テーブル名> set <追加したカラム名> = cast(<変更元のカラム名> as <変更後のデータ型>)
これで追加したカラムに元のカラムの値が入っているので、カラム名を変更して元のカラムを削除(めんどくさい)。
ALTER TABLE <テーブル名> DROP COLUMN <カラム名>