一、需求:

1、客户每月上传固定格式的excel文件到指定目录。每月上传的文件名只有结尾月份不同,如: 10月文件名:  zhongdiangedan202010.xlsx  , 11月文件名: zhongdiangedan202011.xlsx

2、将上传的excel文件导入hive中,在做进一步数据分析。

二、思路:

1、通过python的pandas模块将excel文件转换为txt文件;

2、编写shell脚本,使用 hdfs dfs -put 将txt文件导入指定表(方便每月执行)。

三、pandas.read_excel 包:

def read_excel(io,sheet_name=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,convert_float=True,mangle_dupe_cols=True)

常用属性字段说明,如下:

属性字段

默认字段

含义

io

无,必选

excel文件路径

sheetname

0

取第一个sheet的内容;取多个sheet内容:sheetname=[0,1];取全表:sheetname=None

header

0

指定为表头的行,取第一行为表头 header = 0;无表头:header = None;

names

None

提取指定列名的数据

index_col

None

指定多少列为索引列,或指定对应列名为索引列。

usecols

None

指定要取的列,None:取所有列;只能是列表。注:使用次属性,sheet_name 也必须使用。

skiprows

0

忽略(不取)指定行数的数据,行数为列表形式。如,忽略第1行,第9行数据: skiprows=[1,9]

skip_footer

0

忽略倒数n行数据

四、实现代码:

excel_to_txt.py

#!/user/bin env python

importpandas as pdimportsysdefexcel_to_txt(monthNo):

df= pd.read_excel('/data/excelfile/zhongdiangedan%s.xlsx'%(monthNo),header=None) #使用pandas模块读取数据, header 默认0,指定表头行,None:不取表头

print('开始写入txt文件')

df.to_csv('/data/txtlfile/zhongdiangedan%s.txt'%(monthNo), header=None, sep='\t', index=False) #写入txt中,tab分隔

print('文件写入成功!')if __name__ == '__main__':

monthNo=sys.argv[1]

excel_to_txt(monthNo)

执行python: python excel_to_txt.py 202010

建表:

create tableimpt_excel_data_zhongdiangedan(

col1 string,

col2 string,

col3 string,

col4 string,

col5 string,

col6 string

)partitionedby(month_id string)

row format delimited fields terminatedby '\t'lines terminatedby '\n'storedastextfile

location'/data/hive/database_name/impt/impt_excel_data_zhongdiangedan';

txt_to_hive.sh

#!/bin/bash

monthNo=$1hive-e" use database_name; --指定数据库 database_name

alter table tmp_content_zhongdiangedan dropif exists partition (month_id=$monthNo); --删除分区

alter table tmp_content_zhongdiangedan add partition (month_id=$monthNo); --添加分区"# 导入数据

hdfs dfs-put /data/txtlfile/zhongdiangedan$monthNo.txt /data/hive/database_name/impt/impt_excel_data_zhongdiangedan/month_id=$monthNo

执行shell: sh txt_to_hive.sh 202010

通过hive将excel文件_hive 之 将excel数据导入hive中 : excel 转 txt相关推荐

  1. 将EXCEL表格数据导入hive中

    将EXCEL表格数据导入hive中 第一步:将excel表格转为.csv格式文件(utf-8格式) 第二步:将建表语句中分隔符改为逗号(英文),格式改为text文本格式 第三步:使用linux rz命 ...

  2. R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称、将数据写入Excel文件新的表单(sheet)中、将文件保存为xls文件格式(而不是xlsx)

    R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称.将数据写入Excel文件新的表单(sheet)中.将文件保存为xls文件格式(而不是xlsx) 目录

  3. Python使用pandas读取Excel文件多个WorkSheet的数据并绘制柱状图和热力图

    问题描述:在当前文件夹中有一个存放同一门课程两个班级同学成绩的Excel文件"学生成绩.xlsx",每个工作表中存放一个班级的成绩.编写程序,使用pandas读取其中的数据,然后绘 ...

  4. vue excel导入mysql详细教程_Vue前端上传EXCEL文件,后端(springBoot+MyBatis+MySQL)解析EXCEL并批量插入/更新数据库...

    文章目录 Vue前端 后端 controller层 service层:如何解析Excel文件 MyBatis:实现批量插入 在mysql中设置唯一索引Unique Index MySQL中的inser ...

  5. Python操作Excel文件:插入一列数据

    问题描述:已有Excel文件,其中包含5列数据,要求在第3列前插入一列数据,保存为新文件. 参考代码: 运行结果: --------董付国老师Python系列教材-------- 1)<Pyth ...

  6. print python excel分隔_办公自动化 Python 小工具,对Excel文件,按某一列拆分成多个Excel文件或sheet...

    使用pandas.xlwings.os 库文件,对Excel文件,按某一列拆分成多个Excel文件或sheet,提高工作效率. # -*- coding: utf-8 -*- "" ...

  7. ug如何导入excel数据点_怎样将dat文件中的数据导入ug中进行操作

    怎样将dat文件中的数据导入ug中进行操作 我的问题是,我用了两种方法作一件事情,第一种是直接将cpp 程序的内容粘贴到用一个回调函数中,这样算法生成的数据直接供u g函数使用.这样做的话,感觉很麻烦 ...

  8. 将Excel的数据导入DataGridView中(转)

    https://www.cnblogs.com/lhxhappy/archive/2008/11/26/1341873.html /// <summary>/// 点击按钮导入数据/// ...

  9. matlab打开矩阵表,如何将Excel数据导入MATLAB中?:EXCLE中通过矩阵表输出选项

    怎么把matlab中处理的数据存入到excel中 可以直接xlswrite命令. data=randn(100,1); % data为需要存储的数 xlswrite('D:\write2Excel.x ...

  10. matlab导入word数据,如何将Excel数据导入MATLAB中?/excel数据导入word模板

    如何将Excel数据导入MATLAB中? 从excel中导入,可以用xlsread()函数. 例如: A=xlsread('C:\Users\Administrator\Desktop\07-29预. ...

最新文章

  1. linux目录默认权限是什么,linux文件目录默认权限(详解)
  2. 再一次证明了普通的U盘和SD(TF)卡的不可靠
  3. Redis多实例及主从搭建
  4. global.min.css,css3-媒体查询样式不覆盖原始样式
  5. Spark实战之读写HBase
  6. 防范网络*** 应用层防护是重点
  7. Java设计模式—工厂方法模式抽象工厂模式
  8. 读写分离方案_项目读写分离方案
  9. 判断是否离开当前页面
  10. Mac下docker安装kali/ubuntu14.04
  11. inDesign教程,如何共享inDesign文件?
  12. 广电为什么禁止投屏_广电网络不能投屏 怎么投屏到电视上
  13. 视频剪辑怎么学?五大经验分享,入门可参考
  14. 移动平台动画设计的12个原则
  15. 利用T0定时器定时 100ms,每当定时时间到就使 P1.7 求反
  16. 如何使用TensorRT加速深度学习推理
  17. 运行金蝶KIS记账王V10.0对系统有什么要求
  18. QPainter 绘制圆角矩形 drawRoundRect详解
  19. 如何多方位布局程序化购买生态链条?
  20. python selenium启动不了火狐浏览器(firefox)的解决办法

热门文章

  1. 光环PMP 常考流程
  2. 国际象棋AI人机对弈设计
  3. 基于matlab的语音识别系统
  4. 读《白话统计》笔记——第七章
  5. 最优化学习 约束优化问题
  6. Linux系统安装与使用基础实验报告
  7. 数据oracle的等保三级测评,等级保护测评三级详解测评要求项测评方法及测评步骤...
  8. 计算机基础知识五笔,教你简单快速学习五笔打字
  9. OFD文件免费转PDF
  10. android+vmware+wifi,笔记本使用wifi通过vmware workstation+openwrt 实现上网