下午5点半傍下班来了个急活,领导从三方系统下载的对账单文件,要我导入到一个系统的数据库里。
写程序不赶趟。
凭着对excel操作有一些基础,那么,通过excel直接生成所需的insert语句,然后发给运维执行,也许更快!
原始数据如下:
接下来要生成数据表各字段的值了。
首先,要生成唯一单号。规则是 PD+yyyyMMdd+8位长度的序号。
先新建一列I列,首行是1,双击得到每行的序号。
然后借助excel公式将生成的单号放在H列:="PD"&SUBSTITUTE(A3,"-","")&RIGHT("00000000"&I3,8)
接下来,要根据修改时间,生成创建时间。规则是:创建时间比修改时间早1~100秒。
借助excel公式将生成的创建时间放在J列:=TEXT(F3-TIME(0,0,ROUND( RAND()*100,0)),"yyyy-mm-dd hh:mm:ss")
其中,
- RAND函数用来生成随机数,生成的是0~1之间的小数。
- ROUND函数是四舍五入的,这里取整。
- TIME函数返回的小数值为0 (零)到 0.99999999之间的数值,代表从0:00:00 (12:00:00 AM)到23:59:59 (11:59:59 P.M.)之间的时间。语法是TIME(hour,minute,second)。比如某单元格=TIME(0,0,5),将单元格格式设置为时间时,显示的是0:00:05。
- TEXT函数不知道什么意思,网上说好像还挺强大。我是把大概意思告诉了一个运营小姐姐,人家告诉我的。
接下来,基本上就没什么难度了。直接点击各单元格生成最终的insert就欧克了。
="INSERT INTO t_business_airorders"&RIGHT(LEFT(H6,8),6)&" (OrderId,OrderNo,OrderSt,PayMentSt,BusinessType,MerCode,MerName,ZFDate,ModifyDate,OrderAmount,CreatDate,HKStatus,PayType,KBCode,OrgCode,soncode,CounterFee,validityNum)VALUES('"&H6&"','"&B6&"','YWC','YWC','','9001004221','麦兜兜','"&F6&"','"&F6&"','"&E6&"','"&J6&"','YJS','25','"&H6&"','LD_YS_1_2','','0.00','15');"
最终的excel长这样:
把这些insert语句copy出来,放到记事本文件里,发给运维去生产库执行,确认无误,6:30完活。
如果是现写程序的话,怕是会比这个慢。手里有一把锤子,看到什么都是钉子。程序员嘛,岗位职责就是写代码,不管碰到什么需求,第一反应自然是写程序实现。我记得曾经在某东时,也有听到这样的导入数据的需求,那个转正不久的实习生说写程序得1天。如果他知道excel可以更快交差的话,那岂不是解放生产力了呢。程序员懂一些常用的excel操作是必要的。