把Excel、CSV导入到HIVE中


这里以Excel为例,csv与Excel类似

先把Excel导出为txt格式的文本文件

表如下显示,数据为真实数据已做处理:

身份证

姓名

性别

所在地

手机号码

单位名称

210504********131X

刘*鹏


海曙区

1365574****

宁波市海曙****服装店

330203********2730

黄*明


海曙区

1560661****

宁波市海曙**安装队

330203********1530

陈小*


江北区

1370574****

宁波****有限公司

330203********2733

**云


海曙区

宁波市海曙****机械厂

330203********0317

姜永*


鄞州区

1595885****

宁波市北仑区****有限公司

把表另存为txt格式:

hive 导入csv 忽略第一列 hive导入csv文件_excel导入hive

xxx.txt如下图

hive 导入csv 忽略第一列 hive导入csv文件_excel_02

这里需要注意两点:在保存文件的时候(这里推荐使用Notepad++)

  • 把编码改成UTF-8 - 点击【编码】-> 选择【UTF-8】
  • 把文档格式转换成Unix - 点击【编辑】-> 选择【文档格式转换】-> 选择【转为Unix】

你可以先不管这个,但是你还是会回来的。。。

把处理后的文件放到服务器上

这里根据需求,把处理后的txt文件放到服务器上。

hive 导入csv 忽略第一列 hive导入csv文件_大数据_03

这里笔者试用的SSH连接的Linux系统。

在hive中 建立相对应的表

在hive环境下执行如下语句:

create table default.tmp_xzy ( 
    sfz STRING COMMENT '身份证', xm STRING COMMENT '姓名', 
    xb STRING COMMENT '性别', dylqd STRING COMMENT '待遇领取地',
    sjhm STRING COMMENT '手机号码',dwmc STRING COMMENT '单位名称'
    ) row format delimited 
    fields terminated by '\t' -- 列与列用 制表符 分割
    lines terminated by '\n' -- 行与行用 回车符 分割
    stored as textfile;

导入文件服务器中的txt文件

在hive环境下执行如下语句把文本文件导入hive中:

load data local inpath '/home/xzy/xxx.txt' overwrite into table default.tmp_xzy;

查看数据,验证成果

在hive环境下执行语句,查询数据。

select * from default.tmp_xzy

hive 导入csv 忽略第一列 hive导入csv文件_hive_04

结果正确。
事实证明不需要把字段名加上

如果乱码,请回去看保存txt的注意事项。

清除表数据

如果 出现问题 可以清除表的数据,以便重新导入数据;或删表重建。

-- 方法一
truncate table default.tmp_xzy; -- 清除表数据
-- 方法二
drop table default.tmp_xzy; -- 删表,重建

注意:这里不能使用delete

hive不支持 delete from 表名 where 1 = 1 ;