在数据处理过程中,常遇到一些很棘手的问题。如需要一次性的导入一批非格式化的数据、临时统计、筛选一些参数等工作,如果不写代码,觉得难以实现;写代码,又感到不值得。从多年的职场经验来看,这种鸡肋工作往往还是影响效率的关键点,一个人能力强不强,往往体现在能否灵活、高效地应对这些麻烦。下面,就以几个实例,讲一讲目前公司中盛行的一些“雕虫小技”。
#1 向数据库快速导入临时数据

应用场景:新增了一批券信息,但是上游提供的数据格式并不满足既有自动导入程序的规范;BOSS要求下班前要看到结果。
笨人办法:写程序、手工填写录入
讨巧办法:利用wps 表格批量生成insert脚本
##1.1 数据样式
数据中包含如下几列:

券号 公司名称 生效日期
10238434 志强化工 2016.12.22
10238435 金岸抗压罐 2016.12.23
10238436 志强化工 2016.11.24
10238437 华芳稀有气体 2016.11.25
10238438 志强化工 2016.09.12
10238439 三环制气 2016.12.27

我们数据中,券号是一致的,但是公司名称并不作为关联存储,转而为公司的ID。此外,生效日期也不符合数据库的日期格式。
##1.2 自动关联公司ID与公司名称
第一步,是把公司名称换为ID。我们从现有数据库中拷贝出公司静态信息表的名称、ID,名称在前、ID在后。

select comp_name, comp_id from tb_comp_2017;
comp_name comp_id
志强化工 302838
金岸抗压罐 384475
华芳稀有气体 100192
三环制气 187364
安途特运 448537

在原始表格“公司名称”后面插入一列,并把上述结果粘贴到本电子表格的尾部,如下图所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tBphbDue-1657602387966)(https://img-blog.csdn.net/20170612132317124?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29sZGVuaGF3a2luZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
而后,我们利用VLOOKUP函数自动为B列关联公司ID到C列。

VLOOKUP有四个参数:
(1)来源单元格,即被查找的对象(公司名称)
(2)字典范围,即P、Q列
(3)取值列,即查找结果,为P、Q的第二列
(4)匹配开关,FALSE为精确匹配,TRUE为模糊匹配
在C2单元格输入公式:

=VLOOKUP(B2,P:Q,2,FALSE)

回车后发现已经匹配完毕:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cneW3bgg-1657602387967)(https://img-blog.csdn.net/20170612132759735?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29sZGVuaGF3a2luZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

使用拖拽C2复选框右下角小黑点的方法,可以迅速填满全列:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hXf39GuR-1657602387968)(https://img-blog.csdn.net/20170612132928128?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29sZGVuaGF3a2luZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

##1.3 纠正日期格式
日期格式数据库可接受以"-"分隔,因此,直接进行替换:

=SUBSTITUTE(D2,".","-")

##1.4 生成SQL
我们采用字符串拼接函数来组装生成SQL

=CONCATENATE(A2,",",C2,",'",E2,"');")

效果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YeN6ES4O-1657602387969)(https://img-blog.csdn.net/20170612133739311?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29sZGVuaGF3a2luZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
同样,选中两个单元格G2,H2,下拉选中框右下角的黑点,得到所有语句:

G2 H2
insert into bill_table ( bill_id, comp_id, vdate ) values ( 10238434,302838,‘2016-12-22’);
insert into bill_table ( bill_id, comp_id, vdate ) values ( 10238435,384475,‘2016-12-23’);
insert into bill_table ( bill_id, comp_id, vdate ) values ( 10238436,302838,‘2016-11-24’);
insert into bill_table ( bill_id, comp_id, vdate ) values ( 10238437,100192,‘2016-11-25’);
insert into bill_table ( bill_id, comp_id, vdate ) values ( 10238438,302838,‘2016-09-12’);
insert into bill_table ( bill_id, comp_id, vdate ) values ( 10238439,187364,‘2016-12-27’);

把该语句复制到SQL管理器直接运行,即可插入所有数据。

#2 批量规整文件

来自传感器的原始数据文件被扔在一个单一的文件夹下,文件名的命名如下:
temperature_年月日时分秒_传感器ID.dat,如
temperature_20150413154322_F1B273E0C5.dat
问题是,在同一个文件夹下存放了近20万个零碎小文件,BOSS要求,按照传感器建立一级文件夹,日期建立二级文件夹,重新规整所有文件。
由于该需求不是经常发生,可以说,是“一锤子”买卖,因此,为这样的需求动用编程似乎有点不值得。我们还是请出电子表格来解决。
##2.1 枚举文件名
借助windows控制台,可以方便的获取文件名:

D:\Data\2017>dir /b *.dat> all.txt

用文本编辑器打开该文件,可以看到文件名:

temperature_20150103011816_57F012FA05BA3B97.dat
temperature_20150103014804_547E7DD139696DE7.dat
temperature_20150103084317_2714341909C94ABF.dat
temperature_20150104065907_0193123B757C1664.dat
temperature_20150106091127_4AE0074A458A6D32.dat
temperature_20150106213531_77E51FD259803C6D.dat
temperature_20150107160039_6A7F22120E576FA1.dat
temperature_20150107181009_49575A1F1FA40F3E.dat
temperature_20150108060447_5F8765A566A94390.dat
temperature_20150108164202_1F196C34657D1A44.dat

把所有文件名粘贴到电子表格,在1、2列各粘贴一次。
##2.2 分列获取元素
使用分列功能,按照分隔符号或者宽度,将文件名分为5列
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OX5qtjn6-1657602387970)(https://img-blog.csdn.net/20170612185001962?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29sZGVuaGF3a2luZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
内容类似:

A B C D E F
temperature_2015…dat temperature_ 20150103014804 _ 547E7DD139696DE7 .dat
temperature_2015…dat temperature_ 20150103084317 _ 2714341909C94ABF .dat
temperature_2015…dat temperature_ 20150104065907 _ 0193123B757C1664 .dat
temperature_2015…dat temperature_ 20150106091127 _ 4AE0074A458A6D32 .dat
temperature_2015…dat temperature_ 20150106213531 _ 77E51FD259803C6D .dat
temperature_2015…dat temperature_ 20150107160039 _ 6A7F22120E576FA1 .dat

##2.3 产生批处理命令
使用字符串操作函数,批量产生批处理命令。
(1)首先,创建文件夹指令

=CONCATENATE("md d:\T2017\",E1,"\",LEFT(C1,8),CHAR(13),CHAR(10))

其中,CHAR(13), CHAR(10)表示回车、换行
(2)移动文件指令

=CONCATENATE("MOVE ",A1," d:\T2017\",E1,"\",LEFT(C1,8),CHAR(13),CHAR(10))

效果如下:

md d:\T2017\57F012FA05BA3B97\20150103
MOVE temperature_20150103011816_57F012FA05BA3B97.dat d:\T2017\57F012FA05BA3B97\20150103

批量复制公式到所有记录,得到20多万条指令:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YIPO20Kc-1657602387971)(https://img-blog.csdn.net/20170612190448766?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29sZGVuaGF3a2luZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
##2.4 执行批处理文件
把生成的指令复制到记事本,另存在原始文件夹下,而后在原始文件夹下执行即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dYnEE4Hh-1657602387971)(https://img-blog.csdn.net/20170612190805462?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29sZGVuaGF3a2luZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
结果如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jS5Fnvyf-1657602387972)(https://img-blog.csdn.net/20170612191032316?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29sZGVuaGF3a2luZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

#3 后记
程序猿往往专注于代码,对办公系统的了解程度可能不足。我们公司曾经招聘了一名很厉害的毕业生,写代码的速度和质量很高。但是,为了一个简单的问题,编写一次性的代码、脚本,还是没有搞运维的小伙子用电子表格、Notepad++来的快。
在我们公司,把代码用于上述工作是不受鼓励的。因为编程时,对人的耐心与精力消耗很高,这些精力更应该用在刀刃上。
即便熟练掌握了bash、python等脚本技术,与电子表格、NotePad++等GUI工具相比,实现简单功能耗费的精力完全不同。好的员工除了主干的编程技术,必须要把常用的周边软件掌握好,才能避免纠缠于琐碎的事务无法脱身。

雕虫小技也重要--数据处理中的电子表格技巧相关推荐

  1. 在计算机二级考试中编程题咋打开,全国计算机二级考试中编程题技巧.doc

    全国计算机二级考试中编程题技巧...如有雷同,纯属巧合,仅供参考... 先说我的上级成绩是 100分,虽说编程题部分我也编了,但是我更相信是下面的方法...(王婆卖瓜,自卖自夸) 原理:全国计算机考试 ...

  2. 浅谈VB6.0中的实用技巧

    浅谈VB6.0中的实用技巧 (一) VB6.0中文本框处理技巧 在Visual Basic中,文本框(TextBox)是最常用的控件,熟练运用文本框 是开发出高质量的应用程序的基础.笔者在从事应用程序 ...

  3. Pycharm中一些不为人知的技巧pycharm技巧

    https://www.jianshu.com/p/e9a58704f572 Pycharm中一些不为人知的技巧 0.641 2019.04.08 15:25:50 字数 705 阅读 227 有时候 ...

  4. Python中相见恨晚的技巧(记得收藏)

    话不多说,直接开干,攒了很久! 1. 交换变量值 这个应该比较简单,但是日常用很容易忽略. a, b = 5``, 10 print``(a, b) /``/``5``, 10 a, b = b, a ...

  5. 对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

    对python 数据处理中的LabelEncoder 和 OneHotEncoder详解_起飞的木木的博客-CSDN博客_labelencoder原理

  6. notepad 查找php函数,Notepad++中常用的技巧总结

    本篇文章给大家带来的内容是关于Notepad++中常用的技巧总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Notepad++是一款开源的文本编辑器,功能强大.很适合用于编辑.注 ...

  7. python处理大量excel数据-使用python将大量数据导出到Excel中的小技巧分享

    (1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢?如果碰到需要导出大量数据又该如何操作呢? 本文主要解决以 ...

  8. python输出数据到excel-使用python将大量数据导出到Excel中的小技巧分享

    (1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢?如果碰到需要导出大量数据又该如何操作呢? 本文主要解决以 ...

  9. python输出数据到excel-如何使用python将大量数据导出到Excel中的小技巧之一

    如何使用python将大量数据导出到Excel中的小技巧 (1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢 ...

  10. Python编程语言学习:for循环中常用方法经验技巧(利用enumerate函数对列表实现自带索引等)之详细攻略

    Python编程语言学习:for循环中常用方法经验技巧(利用enumerate函数对列表实现自带索引等)之详细攻略 目录 for循环中常用方法经验技巧 1.利用enumerate函数对列表实现for循 ...

最新文章

  1. vue源码-对于「计算属性」的理解
  2. 操作系统的极简教程(一)
  3. spark读取文件源码分析-3
  4. iOS 为tableview添加新的cell类
  5. LeetCode 188. 买卖股票的最佳时机 IV(动态规划)
  6. 电商促销插画风PSD分层模板,直击底价!吸睛容情!
  7. 计算机算法设计与分析 大学生电影节观影问题
  8. Java int基本类型和Integer之间引发的问题思考
  9. 保持皮肤水嫩有光泽,让皮肤保湿的土办法 - 生活至上,美容至尚!
  10. springboot添加ojdbc6报错
  11. audio语音相关的基础知识-VAD,ASR,AEC,AGC,BF等
  12. 三星note3 android7.0,#原创新人#小白刷机三星NOTE III吃上安卓7.0重生记
  13. Zigbee之旅:第一个CC2430程序LED-IAR相关设置
  14. win7开机密码_win7电脑忘记开机密码 win7怎么跳过密码 windows7锁屏密码忘记
  15. Windows消息ID大全
  16. 5月6日LCAC第十三次会议重要信息摘取
  17. 对话蔡报永:看Commvault 如何玩转数据管理
  18. 学习笔记(34):MATLAB基础入门课程-乘方
  19. 基于turtlebot3实现SLAM建图及自主导航仿真
  20. 6-4 求一组数中的最大值、最小值和平均值

热门文章

  1. 直播视频秒开及视频优化
  2. 面试:视频播放器相关优化参考
  3. NLTK-004:加工原料文本
  4. Threejs3D模型爆炸效果
  5. ctfshow 做题 MISC入门 模块 11-20
  6. 智能门锁电路图_智能门锁原理一览 你pick哪一种?
  7. 键盘没有NumLock这个键 怎样解锁数字键盘?
  8. unity导出fbx模型_三维制作内容,maya模型贴图文件导入untiy,烘焙灯光贴图
  9. 直方图的定义、意义和特征
  10. 鸢尾花完整的python代码_带“鸢”的诗句大全