使用默认值向表中添加列

Posted

技术标签:

【中文标题】使用默认值向表中添加列【英文标题】:Add Column to Table with Default Value 【发布时间】:2019-05-21 02:57:33 【问题描述】:

我正在尝试向表中添加一列(最好不使用数据框),默认值为“MONTHLY”

ALTER TABLE aa_monthly ADD COLUMNS (Monthly_or_Weekly_Indicator string NOT NULL FIRST DEFAULT ('MONTHLY'))

这给了我一个错误:

SQL 语句中的错误:ParseException: mismatched input 'DEFAULT' 期待 ')'(第 1 行,第 88 位)

无论我在 sql 语句中是否有FIRST,我都会遇到同样的错误。

我看过here 和here

【问题讨论】:

【参考方案1】:

在 Hive 你 cannot add a default value for a column,很遗憾。

column change 命令只会修改 Hive 的元数据,不会修改数据

【讨论】:

【参考方案2】:

希望对你有帮助

ALTER TABLE aa_monthly 
    ADD Monthly_or_Weekly_Indicator string NOT NULL DEFAULT 'MONTHLY'

【讨论】:

啊,我收到此错误:SQL 语句中的错误:ParseException:输入“ALTER TABLE aa_monthly ADD Monthly_or_Weekly_Indicator”(第 1 行,第 35 行)没有可行的替代方案。它在“添加”之后显示错误【参考方案3】:

有多种方法

1)  ALTER TABLE aa_monthly 
    ADD Monthly_or_Weekly_Indicator string  not null
    CONSTRAINT Monthly_or_Weekly_Indicator DEFAULT 'MONTHLY'
    WITH VALUES

2)  ALTER TABLE aa_monthly 
    ADD Monthly_or_Weekly_Indicator string NOT NULL DEFAULT 'MONTHLY'

【讨论】:

不幸的是,这些都不起作用。他们都在“添加”后立即挂断。我得到同样的错误: com.databricks.backend.common.rpc.DatabricksExceptions$SQLExecutionException: org.apache.spark.sql.catalyst.parser.ParseException: 在输入'ALTER TABLE aa_monthly \n ADD Monthly_or_Weekly_Indicator'(line 2,位置 8) 你是直接点击这个查询还是通过任何程序?? 直接。我在数据块中使用 sql

以上是关于使用默认值向表中添加列的主要内容,如果未能解决你的问题,请参考以下文章

Sqlserver 数据库

SQL 基础之DML 数据处理(十三)

4数据更新

Impala 添加具有默认值的列

T-SQL中向表中插入一条数据,其中类型为Decimal的列对应的插入值为‘2400’可就是不行还报“......

在配置单元中创建表时向列添加默认值