有如下場景須要咱們給字段添加默認值。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應用:選取分隔符