如何增加 Redshift 数据库表中的列大小?

Vin*_* _S 8 redshift

在 oracle 中,我可以:

Alter table table_name
modify column_name datatype;
Run Code Online (Sandbox Code Playgroud)

这在红移数据库中可能吗?

enr*_*nri 7

AWS Redshift中,现在可以更改ONLY VARCHAR 列,但在以下条件下:

  • 您不能更改压缩编码为 BYTEDICT、RUNLENGTH、TEXT255 或 TEXT32K 的列。
  • 您不能将大小减小到小于现有数据的最大大小。
  • 您不能更改具有默认值的列。
  • 您不能使用 UNIQUE、PRIMARY KEY 或 FOREIGN KEY 更改列。
  • 您不能更改多语句块 (BEGIN...END) 内的列。

请参阅文档


小智 5

增加 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;
Run Code Online (Sandbox Code Playgroud)


小智 5

最近 AWS 增加了对增加 varchar 列大小的支持,

更改 VARCHAR 列 为了节省存储空间,您可以最初使用 VARCHAR 列定义一个表,该列的大小是当前数据要求所需的最小大小。如果以后需要容纳更长的字符串,可以更改表以增加列的大小。为了保护现有数据,您不能减小列大小。

以下示例将 EVENTNAME 列的大小更改为 VARCHAR(300)。

alter table event alter column eventname type varchar(300);
Run Code Online (Sandbox Code Playgroud)

以下命令失败,因为它尝试减小 EVENTNAME 列的大小。

alter table event alter column eventname type varchar(100);
Run Code Online (Sandbox Code Playgroud)

关联