load 加载数据
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] [INPUTFORMAT 'inputformat' SERDE 'serde' ] ( 3.0 or later) |
(1)load data:表示加载数据。
(2)local:表示从本地加载数据到Hive表;否则从HDFS加载数据到Hive表。
(3)inpath:表示加载数据的路径。
(4)overwrite:表示覆盖表中已有数据,否则表示追加。
(5)into table:表示加载到哪张表。
(6)partition:表示上传到指定分区。
(1)加载本地文件到hive
hive ( default )> load data local inpath "/home/data/demo.txt" overwrite into table hive.demo; |
(2) 加载HDFS文件到hive中
hive ( default )> hadoop fs -put /home/data/demo.txt /user/data ; hive ( default )> load data inpath "/user/data/demo.txt" overwrite into table hive.demo; |
insert 插入数据
1)基本模式插入数据
hive ( default )> insert overwrite table hive.demo._insert select id, name from hive.demo; hive ( default)> insert into table hive.demo._insert values(1 , 'wanger' ),( 2 , 'zhaoliusan' ) ; |
注意:insert导出时,hive会自动创建导出目录,但是由于是overwrite,所以导出路径一定要写准确,否则存在误删数据的可能。
2)根据查询结果插入数据
hive ( default)> insert overwrite table hive.demo2 select id, name from hive.demo ; |
根据查询结果创建表(查询的结果会添加到新创建的表中)。
hive ( default )> create table if not exists hive.demo3 as select id, name from hive.demo ; |
Import&Export
export命令能够导出一张表或分区的数据和元数据信息到一个输出位置,而且导出数据能够被移动到另外一个hadoop集群或hive实例,而且能够经过import命令导入数据。一般用在数据迁移的场景。
具体语法:
EXPORT TABLE tablename [PARTITION (part_column= "value" [, ...])] TO 'export_target_path' [ FOR replication( 'eventid' ) ] IMPORT [[EXTERNAL] TABLE new_or_original_tablename [PARTITION (part_column= "value" [, ...])]] FROM 'source_path' [LOCATION 'import_target_path' ] |
数据到指定Hive表中
注意:先用export导出后,再将数据导入。并且因为export导出的数据里面包含了元数据,因此import要导入的表不可以存在,否则报错。
导出到HDFS
-- 导出stu1.emp1到hdfs下的/user/data/export/emp export table stu1.emp1 to '/user/data/export/emp'; -- 将/user/data/export/emp文件导入到stu1.emp2 import table stu1.emp2 from '/user/data/export/emp'; |
Export和Import主要用于两个Hadoop平台集群之间Hive表迁移,不能直接导出到本地。