web-dev-qa-db-ja.com

Redshiftデータベーステーブルの列サイズを増やす方法

Oracleでは、次のことができます。

Alter table table_name
modify column_name datatype;

これはredshiftデータベースで可能ですか?

6
Vinoth _S

AWS Redshiftではnowを変更できますVARCHAR列のみですが、次の条件が当てはまります。

  • BYTEDICT、RUNLENGTH、TEXT255、またはTEXT32Kの圧縮エンコーディングで列を変更することはできません。
  • 既存のデータの最大サイズよりも小さいサイズを減らすことはできません。
  • デフォルト値で列を変更することはできません。
  • UNIQUE、PRIMARY KEY、またはFOREIGN KEYを使用して列を変更することはできません。
  • マルチステートメントブロック(BEGIN ... END)内の列を変更することはできません。

ドキュメントを参照

6
enri

最近AWSはvarchar列サイズを増やすためのサポートを追加しました、

VARCHAR列の変更ストレージを節約するために、現在のデータ要件に必要な最小サイズのVARCHAR列を含むテーブルを最初に定義できます。後で長い文字列に対応する必要がある場合は、テーブルを変更して列のサイズを増やすことができます。既存のデータを保護するために、列のサイズを小さくすることはできません。

次の例では、EVENTNAME列のサイズをVARCHAR(300)に変更します。

alter table event alter column eventname type varchar(300);

次のコマンドは、EVENTNAME列のサイズを小さくしようとするため失敗します。

alter table event alter column eventname type varchar(100);

リンク

3
Arik Gortsunian

Redshiftデータベーステーブルの列サイズ/タイプの増加

いいえ、テーブルを再作成せずにRedshiftの列サイズを増やすことはできません。

ただし、列がテーブルの最後の列である場合は、必要な変更を加えた新しい列を追加してデータを移動し、次のように古い列を削除できます。

ALTER TABLE TEST ADD COLUMN COLUMN_NEW VARCHAR(100);
UPDATE TEST SET COLUMN_NEW = COLUMN_OLD;
ALTER TABLE TEST DROP COLUMN COLUMN_OLD;
ALTER TABLE TEST RENAME COLUMN COLUMN_NEW TO COLUMN_OLD;
3
Tech Support