在配置单元中创建 table 时向列添加默认值
Adding a default value to a column while creating table in hive
我能够从外部文件中的数据创建配置单元 table。现在,我希望根据先前 table 中的数据创建另一个 table,并添加具有默认值的列。
我知道可以使用 CREATE TABLE AS SELECT 但我如何添加具有默认值的其他列?
您可以指定 create/update 上 table 的哪些列 select。只需提供默认值作为列之一。 UPDATE 示例如下:
创建简单 table 并用值填充它:
hive> create table table1(col1 string);
hive> insert into table table1 values('val1');
hive> select col1 from table1;
OK
val1
Time taken: 0.087 seconds, Fetched: 1 row(s)
允许动态分区:
hive> SET hive.exec.dynamic.partition.mode=nonstrict;
正在创建第二个 table:
hive> create table table2(col1 string, col2 string);
从 table1 使用默认值填充它:
hive> insert overwrite table table2 select col1, 'DEFAULT' from table1;
hive> select * from table2;
OK
val1 DEFAULT
Time taken: 0.081 seconds, Fetched: 1 row(s)
我也一直在为此寻找解决方案并想出了这个:
CREATE TABLE test_table AS SELECT
CASE
WHEN TRUE
THEN "desired_value"
END AS default_column_name;
我能够从外部文件中的数据创建配置单元 table。现在,我希望根据先前 table 中的数据创建另一个 table,并添加具有默认值的列。
我知道可以使用 CREATE TABLE AS SELECT 但我如何添加具有默认值的其他列?
您可以指定 create/update 上 table 的哪些列 select。只需提供默认值作为列之一。 UPDATE 示例如下:
创建简单 table 并用值填充它:
hive> create table table1(col1 string);
hive> insert into table table1 values('val1');
hive> select col1 from table1;
OK
val1
Time taken: 0.087 seconds, Fetched: 1 row(s)
允许动态分区:
hive> SET hive.exec.dynamic.partition.mode=nonstrict;
正在创建第二个 table:
hive> create table table2(col1 string, col2 string);
从 table1 使用默认值填充它:
hive> insert overwrite table table2 select col1, 'DEFAULT' from table1;
hive> select * from table2;
OK
val1 DEFAULT
Time taken: 0.081 seconds, Fetched: 1 row(s)
我也一直在为此寻找解决方案并想出了这个:
CREATE TABLE test_table AS SELECT
CASE
WHEN TRUE
THEN "desired_value"
END AS default_column_name;