如何将 SUPER 列添加到现有 AWS Redshift 表?

Posted

技术标签:

【中文标题】如何将 SUPER 列添加到现有 AWS Redshift 表?【英文标题】:How to add SUPER column to existing AWS Redshift table? 【发布时间】:2022-01-06 12:30:43 【问题描述】:

目标

我想将 Redshift SUPER column 添加到现有的 redshift 表中。 我需要这个来在那里存储 JSON 数据

代码

这就是我通常添加新列的方式。

ALTER TABLE products 
ADD COLUMN created_at NOT NULL;

1.试过了

CREATE TABLE temp_test_persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

ALTER TABLE temp_test_persons ADD COLUMN newSuperColumn SUPER NOT NULL; 

运行查询时出错:定义为 NOT NULL 的 ALTER TABLE ADD COLUMN 必须具有非空默认表达式

经过审核的解决方案

Alter column data type in Amazon Redshift AWS Redshift - Add IDENTITY column to existing table Adding column to existing tables Add dynamic column to existing mysql table? SQLAlchemy: How to add column to existing table? adding columns to an existing table add column to existing table postgres How to add not null unique column to existing table Adding columns to existing csv file using super-csv UCanAccess: Add column to existing table Adding columns to existing redshift table How to add column to existing table in laravel? Add column to existing table in rds oracle add column to existing table

【问题讨论】:

您是否尝试简单地将数据类型添加到您的语句中? ALTER TABLE products ADD COLUMN newSuperColumn SUPER NOT NULL; 我试过了,但它返回了一个错误(你可以在我编辑的帖子中看到它)。 【参考方案1】:

解决方案是为该列设置一个默认值。然后您可以将列定义为 NotNull。 像这样

ALTER TABLE temp_test_persons 
ADD COLUMN newSuperColumn SUPER NOT NULL 
DEFAULT '';

【讨论】:

【参考方案2】:
ALTER TABLE temp_test_persons 
ADD COLUMN newSuperColumn SUPER;

【讨论】:

以上是关于如何将 SUPER 列添加到现有 AWS Redshift 表?的主要内容,如果未能解决你的问题,请参考以下文章

如何将生命周期策略添加到 AWS CDK Typescript 中的现有 S3 存储桶

如何在 AWS REDSHIFT 中使现有列不为空?

如何将列添加到现有表?

使用aws cli将全局二级索引添加到DynamoDB中的现有表

如何将 AUTO_INCREMENT 添加到现有列?

如何将标识属性添加到 SQL Server 中的现有列