Hiveinsertinto 话语⽤法
Hive insert into 语句⽤法
在Hive0.8开始⽀持Insert into 语句,它的作⽤是在⼀个表格⾥⾯追加数据。
标准语法语法如下:
注意:上⾯语句由于太长了,为了页⾯显⽰美观,⽤’\'符号换⾏了。
举例:
这样就会将tt 表格⾥⾯的数据追加到cite 表格⾥⾯。并且在cite 数据存放⽬录⽣成了⼀个新的数据⽂件,这个新⽂件是经过处理的,列之间的分割是cite 表格的列分割符,⽽不是tt 表格列的分隔符。
(1)、如果两个表格的维度不⼀样,将会插⼊错误:
1
2
3
4
5
6
7
8
9 ⽤法⼀:INSERT OVERWRITE TABLE tablename1 [PARTITION \(partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] \select_statement1 FROM from_statement; ⽤法⼆:INSERT INTO TABLE tablename1 [PARTITION \(partcol1=val1, partcol2=val2 ...)] \select_statement1 FROM from_statement;
1
2 hive> insert into table cite > select * from tt;
1
2
3
4
5
6 hive> insert into table cite > select * from cite_standby; FAILED: SemanticException [Error 10044]: Line 1:18Cannot insert into target table because column number/types are different 'cite':
Table insclause-0has 2columns, but query has 1columns.
从上⾯错误提⽰看出,查询的表格cite_standby 只有⼀列,⽽⽬标表格(也就是需要插⼊数据的表格)有2列,由于列的数⽬不⼀样,导致了上⾯的语句不能成功运⾏,我们需要保证查询结果列的数⽬和需要插⼊数据表格的列数⽬⼀致,这样才⾏。
(2)、在⽤extended 关键字创建的表格上插⼊数据将会影响到其它的表格的数据,因为他们共享⼀份数据⽂件。
(3)、如果查询出来的数据类型和插⼊表格对应的列数据类型不⼀致,将会进⾏转换,但是不能保证转换⼀定成功,⽐如如果查询出来的数据类型为int ,插⼊表格对应的列类型为string ,可以通过转换将int 类型转换为string 类型;但是如果查询出来的数据类型为string ,插⼊表格对应的列类型为int ,转换过程可能出现错误,因为字母就不可以转换为int ,转换失败的数据将会为NULL 。
exists的用法 (4)、可以将⼀个表查询出来的数据插⼊到原表中:
结果就是相当于复制了⼀份cite 表格中的数据。
(5)、和insert overwrite 的区别:
1
2 hive> insert into table cite > select * from cite;
1
2 hive> insert overwrite table cite > select * from tt;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论