Hive應用:設置字段默認值

Hive應用:設置字段默認值

介紹

有如下場景須要咱們給字段添加默認值。sql

當咱們清理了一些數據以後,數據的某些字段在數據中是沒有的可是須要保留這個字段,那麼咱們將數據插入中轉表中時,就須要給這個字段賦予默認值,來讓語句正確執行。apache

本人知道的添加默認值的方法有如下兩種:bash

直接量

在寫插入語句的時候,能夠直接在語句中將默認值寫入。函數

例如:spa

insert into table User_Attribute select (row_number() over())+1000 as id,customid,0 as age from tbl_custom;

如上面的語句,清理的數據中沒有年齡字段,而中轉表中有這個字段,那麼在插入的時候就直接將默認值0賦給這個字段。其餘類型的直接量也同樣。.net

示例:code

hive> select * from person;
OK
1.0	張三	20.0	男	未知
2.0	李四	25.0	男	河北
3.0	張飛	30.0	男	河北
4.0	關羽	35.0	男	山東
5.0	小喬	38.0	女	浙江
6.0	劉備	40.0	男	成都
7.0	小李	29.0	男	江南

以上是本人hive中一個表中的數據,本人想把這個數據導入到另一張表中,添加一個test int類型的字段,那麼有以下操做:orm

hive> create table ren(id string,name string,age string,gender string,address string,test int) row format delimited fields terminated by '|';
OK
Time taken: 0.415 seconds
hive> insert into table ren select * , 0 as test from person;

執行完插入語句,咱們看一下數據:blog

hive> select * from ren;
OK
1.0	張三	20.0	男	未知	0
2.0	李四	25.0	男	河北	0
3.0	張飛	30.0	男	河北	0
4.0	關羽	35.0	男	山東	0
5.0	小喬	38.0	女	浙江	0
6.0	劉備	40.0	男	成都	0
7.0	小李	29.0	男	江南	0
Time taken: 0.61 seconds, Fetched: 7 row(s)
hive>

插入成功,而且成功的增長了字段並且賦予了默認值。get

內置函數

除了直接量的方法,咱們還可使用Hive的內置函數來作到這一點。

示例:

仍是上面的例子,此次使用內置函數來完成,操做以下:

hive> insert into table ren select * , abs(0) as test from person;

此次使用的是求絕對值的函數,將這個值賦予test字段。

看一下數據:

hive> select * from ren;
OK
1.0	張三	20.0	男	未知	0
2.0	李四	25.0	男	河北	0
3.0	張飛	30.0	男	河北	0
4.0	關羽	35.0	男	山東	0
5.0	小喬	38.0	女	浙江	0
6.0	劉備	40.0	男	成都	0
7.0	小李	29.0	男	江南	0
1.0	張三	20.0	男	未知	0
2.0	李四	25.0	男	河北	0
3.0	張飛	30.0	男	河北	0
4.0	關羽	35.0	男	山東	0
5.0	小喬	38.0	女	浙江	0
6.0	劉備	40.0	男	成都	0
7.0	小李	29.0	男	江南	0
Time taken: 0.296 seconds, Fetched: 14 row(s)
hive>

數據也插入成功並賦予了默認值。

以上就是兩種賦予字段默認值的方法。

上一篇:Hive應用:設置字段自增

下一篇:Hive應用:選取分隔符

相關文章
相關標籤/搜索