Hive insert into语句用法

15 篇文章 1 订阅
11 篇文章 26 订阅

src="http://service.weibo.com/staticjs/weibosharev2.html?url=http%3A%2F%2Fwww.iteblog.com%2Farchives%2F866&type=button&ralateUid=1614520581&language=zh_cn&appkey=2D9AJC&searchPic=true&style=number" width="128" height="25" frameborder="0" scrolling="no" marginheight="0" style="margin: 0px; padding: 0px; border-width: 0px; outline: 0px;">
   写在前面的话,学 Hive这么久了,发现目前国内还没有一本完整的介绍 Hive的书籍,而且互联网上面的资料很乱,于是我决定写一些关于《 Hive的那些事》序列文章,分享给大家。我会在接下来的时间整理有关 Hive的资料,如果对Hive的东西感兴趣,请关注本博客。

  在Hive0.8开始支持Insert into语句,它的作用是在一个表格里面追加数据。

标准语法语法如下:

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;

这样就会将tt表格里面的数据追加到cite表格里面。并且在cite数据存放目录生成了一个新的数据文件,这个新文件是经过处理的,列之间的分割是cite表格的列分割符,而不是tt表格列的分隔符。
  (1)、如果两个表格的维度不一样,将会插入错误:

1
2
3
4
5
6
hive> insert into table cite
     > select * from cite_standby;
 
FAILED: SemanticException [Error 10044 ]: Line 1 : 18 Cannot insert into
target table because column number/types are different 'cite' :
Table insclause- 0 has 2 columns, but query has 1 columns.

从上面错误提示看出,查询的表格cite_standby只有一列,而目标表格(也就是需要插入数据的表格)有2列,由于列的数目不一样,导致了上面的语句不能成功运行,我们需要保证查询结果列的数目和需要插入数据表格的列数目一致,这样才行。
  (2)、在用extended关键字创建的表格上插入数据将会影响到其它的表格的数据,因为他们共享一份数据文件。
  (3)、如果查询出来的数据类型和插入表格对应的列数据类型不一致,将会进行转换,但是不能保证转换一定成功,比如如果查询出来的数据类型为int,插入表格对应的列类型为string,可以通过转换将int类型转换为string类型;但是如果查询出来的数据类型为string,插入表格对应的列类型为int,转换过程可能出现错误,因为字母就不可以转换为int,转换失败的数据将会为NULL。
  (4)、可以将一个表查询出来的数据插入到原表中:

1
2
hive> insert into table cite    
  > select * from cite;

  结果就是相当于复制了一份cite表格中的数据。
  (5)、和insert overwrite的区别:

1
2
hive> insert overwrite table cite                      
  > select * from tt;

  上面的语句将会用tt表格查询到的数据覆盖cite表格已经存在的数据。
  更多关于Hive insert into的用法,可以参见Hive 官方wiki:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Hive中,INSERT INTO语句用于将数据插入到表中。语法如下: INSERT INTO TABLE table_name [PARTITION (partition_key = 'partition_value', ...)] [SELECT ... | VALUES ...] 其中,table_name是要插入数据的表名,PARTITION子句是可选的,用于指定要插入数据的分区。如果表没有分区,则不需要使用PARTITION子句。SELECT子句或VALUES子句用于指定要插入的数据。 例如,以下是将数据插入到名为my_table的表中的示例: INSERT INTO TABLE my_table VALUES (1, 'John', 'Doe'), (2, 'Jane', 'Smith'); 此示例将在my_table表中插入两行数据,每行包含三个列:id、first_name和last_name。 ### 回答2: Hive中的insert into语句是用于将数据插入到表中的命令。它的语法类似于传统的SQL语言,在Hive中允许执行数据加载和数据复制等操作。 insert into语句的基本语法如下: insert into table_name [partition(column=value,...)] values (value1,value2,...) 其中,table_name是要插入数据的目标表名;partition是用于指定分区的语法,允许用户将数据插入到特定的分区;values则是要插入的数据值。 例如,假设我们有一个名为“student”的表,其中包含id、name和age三个字段。要向该表插入一条新数据,可以执行以下insert into语句insert into student values (1,'Tom',18); 这条语句将在student表中插入一条新的记录,该记录包含id为1、name为Tom、age为18的信息。 除此之外,insert into语句还支持从其他表中复制数据的操作,可以通过使用select子句来完成。例如,可以使用以下语句将一个表的数据复制到另一个表中: insert into student2 select * from student; 这条语句将从student表中选择所有的字段和记录,并将它们插入到student2表中。 总的来说,Hive中的insert into语句是一个非常强大的命令,可以用于将数据插入到表中、将数据从一个表复制到另一个表中等多种操作。在实际使用中,需要根据具体的业务场景和需求,选用不同的insert into语句来完成数据的操作。 ### 回答3: Hive是一个分布式SQL引擎,用于在Hadoop集群上处理海量数据。在Hive中,insert into语句是用于将数据插入到Hive表中的。下面是insert into语句的相关内容。 语法: INSERT INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] [VALUES (val1, val2 ...), (val1, val2 ...), ...] [QUERY expression] 解释: INSERT INTO TABLE:指定将数据插入到哪个表中。 PARTITION:如果表是分区的,可以使用PARTITION子句指定所插入的数据所属的分区。 VALUES:指定要插入的数据行。VALUES子句可以同时插入多行数据。 QUERY:使用SELECT语句从其他表中引用数据,然后将结果插入到当前表中。 示例: 1. 插入一行数据到已创建的表中 INSERT INTO TABLE employee VALUES (1,"John", "M", "Engineering", 100000); 2. 插入多行数据到已创建的表中 INSERT INTO TABLE employee VALUES (2, "Jane", "F", "Sales", 80000), (3, "Adam", "M", "Marketing", 75000); 3. 插入一行数据到分区表中 INSERT INTO TABLE employee PARTITION (country="US", state="CA") VALUES (4, "Emily", "F", "Engineering", 90000); 4. 从其他表中查询数据并插入到当前表中 INSERT INTO TABLE employee_temp SELECT emp_id, emp_name, gender, department, salary FROM employee WHERE salary > 80000; 总之,Hive中的insert into语句是用来将数据插入到表中的关键字。它的语法灵活,可以方便地向表和分区表中插入单个或多个数据行,也可以从其他表中查询数据并将其插入到当前表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值