加载数据
由于hive中的数据存储在HDFS上,只需将数据存储在hive表的目录下,完成映射即可。所以可以使用hadoop的命令来加载数据
使用"-put"加载数据
hadoop fs -put '文件' '/user/hive/warehouse/数据库名.db/表名'
使用"-mv|-cp"加载数据(只适用内部表和外部表)
hadoop fs -mv/-cp '文件路径' '/user/hive/warehouse/数据库名.db/表名'
注:这两个命令只适用普通的内部数据表和外部数据表,不适用分区表和分桶表。
使用load加载数据
--加载数据到普通表
load data local inpath '文件路径' into table '表名'
--加载分区表
load data local inpath '文件路径' into table '表名' partition (pubid=1)
注:此命令只能在hive的交互式窗口中运行,他适用于内部数据表、外部数据表和分区表,但是加载分区表时,需要指明分区字段。
查询插入
hive中使用"insert…select"语法,将查询的结果插入到其他的数据表中;但是,数据表的结构要与查询的结果的结构完全对应,否则,会出现"null".
.多重插入(将同一个数据表中的不同字段,插入到不同的数据表中)
from student
insert overwrite table student_id select id
insert overwrite table student_name select name
注:数据表"student"中应"id"和"name"两个字段,将"id"插入到" student_id"表中,将"name"插入到" student_name"表中。
导出数据
以默认的分隔符将hive中的数据导出
insert overwrite local directory '目录地址' select * from '数据表名';
注:“local"参数表示将数据导出到Linux系统中(本地),如果不写此参数,表示数据导出到hadoop文件系统中,并且此语句导出的数据的分隔符为默认分隔符(”\001")。
使用指定的分隔符将hive中的数据导出
insert overwrite local directory '目录地址' row format delimited fields terminated by char select * from '数据表名';
注:此语句指定以"char"为分隔符(如,"\t"、","等)将数据导出。