ablog

不器用で落着きのない技術者のメモ

Redshift でテーブルにカラムを追加できる位置

Redshift でテーブルの末尾にしかカラムを追加できない。ドキュメントを見る限りカラム位置を指定するような構文はない。

  • 接続する
$ psql -a "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439"
  • テーブルを作成
dev=# create table test(
dev(#   name varchar(10),
dev(#   updated timestamp
dev(# );
CREATE TABLE
  • カラム追加
dev=# alter table test add column added_column int;
ALTER TABLE
  • 追加したカラムを確認
dev=# show table test;
               Show Table DDL statement
------------------------------------------------------
 CREATE TABLE public.test (                          +
     name character varying(10) ENCODE lzo,          +
     updated timestamp without time zone ENCODE az64,+
     added_column integer ENCODE az64                +
 )                                                   +
 DISTSTYLE AUTO;
(1 row)

dev=#
dev=# SHOW COLUMNS FROM TABLE dev.public.test;
 database_name | schema_name | table_name | column_name  | ordinal_position | column_default | is_nullable |          data_type          | character_maximum_length | numeric_precision | remarks
---------------+-------------+------------+--------------+------------------+----------------+-------------+-----------------------------+--------------------------+-------------------+---------
 dev           | public      | test       | added_column |                3 |                | YES         | integer                     |                          |                32 |
 dev           | public      | test       | name         |                1 |                | YES         | character varying           |                       10 |                   |
 dev           | public      | test       | updated      |                2 |                | YES         | timestamp without time zone |                          |                   |
(3 rows)