一、需求:

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
import pandas as pd
import sys
def excel_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 table impt_excel_data_zhongdiangedan(
col1 string,
col2 string,
col3 string,
col4 string,
col5 string,
col6 string
)partitioned by (month_id string)
row format delimited fields terminated by '\t'
lines terminated by '\n'
stored as textfile
location '/data/hive/database_name/impt/impt_excel_data_zhongdiangedan';

txt_to_hive.sh

#!/bin/bash
monthNo=$1
hive -e"
use database_name; -- 指定数据库 database_name
alter table tmp_content_zhongdiangedan drop if 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 转 txt的更多相关文章

  1. MATLAB/Excel-如何将Excel数据导入MATLAB中

    在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.本文在MATLAB 2013a和Office 2013环境下 ...

  2. 将Excel数据导入Oracle中

    第一步:修改Excel 1.将Excel的表头修改为目标数据库中表的字段名 2.去重(如果有需要的话) 删除Excel表中的重复数据: 选择去重的列: 删除成功后提示: 第二步:将修改后的Excel另 ...

  3. 把excel数据导入mysql中

    适用:每列的数据都不是以逗号分隔. 1.在mysql建表,全部字段与表头相同且顺序一致 2.将excel另存为csv格式,用Editplus把CSV文件另存为UTF-8编码格式 3.执行load da ...

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

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

  5. 在HUE中将文本格式的数据导入hive数仓中

    今天有一个需求需要将一份文档形式的hft与fdd的城市关系关系的数据导入到hive数仓中,之前没有在hue中进行这项操作(上家都是通过xshell登录堡垒机直接连服务器进行操作的),特此记录一下. - ...

  6. 042 将数据导入hive,将数据从hive导出

    一:将数据导入hive(六种方式) 1.从本地导入 load data local inpath 'file_path' into table tbname; 用于一般的场景. 2.从hdfs上导入数 ...

  7. 使用sqoop把mysql数据导入hive

    使用sqoop把mysql数据导入hive export HADOOP_COMMON_HOME=/hadoop export HADOOP_MAPRED_HOME=/hadoop   cp /hive ...

  8. .net导入excel数据到数据库中

    在开发过程中我们经常面临着需要将数据导出或者导入到系统中,例如一些生产管理系统,项目管理系统等等都会有这样的需求: 将excel数据到系统中思路:获取excel中每一行的数据,然后存入集合中,批量添加 ...

  9. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

随机推荐

  1. Restful、SOAP、RPC、SOA、微服务之间的区别

    什么是Restful Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或设计就是 Restful架构或服务. 主要的设计原则: 资源与URI ...

  2. Springboot(1) helloworld 搭建环境

    一 .springboot 运行环境: 1. jdk1.8:Spring Boot 推荐jdk1.7及以上:java version "1.8.0_112" 2.–maven3.x ...

  3. 【C/C++】例题3-6 环状序列/算法竞赛入门经典/数组和字符串

    [字典序比较] 对于两个字符串,比较字典序,从第一个开始,如果有两位不一样的出现,那么哪个的ASCII码小,就是字典序较小.如果都一样,那么短的小. [题目] 输入一个环状串,输出最小的字典序序列. ...

  4. 【C#】【MySQL】C#连接MySQL数据库(二)解析

    C# MySQL 实现简单登录验证 后端代码解析 Visual Studio中使用MySQL的环境配置 下文所有到的代码(前端后端) 请查阅这篇博文 C#连接MySQL数据库(一)代码 获取前端数据 ...

  5. C#编程概述(摘抄)

    C#编程概述 一个简单的C#程序 标识符 标识符是一种字符串,用来命名变量.方法.参数和许多后面将要阐述的其他程序结构. 关键字 所有C#关键字都由小写字母组成,但是.NET类型名使用Pascal大小 ...

  6. 转:苹果iphone APP界面设计尺寸官方版

    苹果iphone APP界面设计尺寸官方版

  7. Node.js 中文乱码解决

    Node.js 中文乱码解决 Node.js 支持中文不太好(实际上是Javascript支持),见<Node.js开发指南>. 要想Node.js正常显示中文,需要两点: 1.js文件保 ...

  8. RocketMQ源码详解 | Broker篇 · 其五:高可用之主从架构

    概述 对于一个消息中间件来讲,高可用功能是极其重要的,RocketMQ 当然也具有其对应的高可用方案. 在 RocketMQ 中,有主从架构和 Dledger 两种高可用方案: 第一种通过主 Brok ...

  9. 粒子群算法-PSO

    粒子群优化算法 1. 背景知识 1995年美国社会心理学家Kennedy和电气工程师Eberhart共同提出粒子群优化算法(Particle Swarm Optimization, PSO).PSO算 ...

  10. VS 2019 调试 Asp.net WebApi 失败:ID为xx的进程当前未运行

    概述 解决方案 用记事本或者其他文本编辑器,从文件夹中打开启动项项目下的 .csproj 文件: 删除节点 WebProjectProperties 内的所有代码: 保存后,VS会提示全部重新加载项目 ...