V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ccl945
V2EX  ›  开源软件

有大佬开源过这种需求么,没有我就准备跑路了

  •  
  •   ccl945 · 2018-06-27 09:14:58 +08:00 · 6785 次点击
    这是一个创建于 2360 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是需要一个系统每天定时发送 excel 数据到邮箱,excel 数据来源直接写 sql。我特么一个干运维的。 妈蛋,准备跑路了。

    35 条回复    2018-06-27 20:46:30 +08:00
    hand515
        1
    hand515  
       2018-06-27 09:21:27 +08:00
    csv 格式了解下
    yifanes
        2
    yifanes  
       2018-06-27 09:38:58 +08:00 via Android
    crontab sql csv 自己写,不会百度这几个关键词
    liyer
        3
    liyer  
       2018-06-27 09:40:26 +08:00
    kettle 了解一下?
    Mbin
        4
    Mbin  
       2018-06-27 09:41:31 +08:00 via iPhone
    类似模块一大堆。楼主不用跑路,很容易的
    janus77
        5
    janus77  
       2018-06-27 09:43:22 +08:00 via Android
    这不就是拉报表么,只是过程自动化了一下
    weifuqiao1989
        6
    weifuqiao1989  
       2018-06-27 09:48:20 +08:00
    kettle 可实现
    xhyzidane
        7
    xhyzidane  
       2018-06-27 09:48:30 +08:00   ❤️ 1
    非常基础的需求了
    ccl945
        8
    ccl945  
    OP
       2018-06-27 09:49:13 +08:00
    @yifanes 调度平台我知道,但是不能直接贴上 sql 就发送 excel
    CoCoMcRee
        9
    CoCoMcRee  
       2018-06-27 09:50:43 +08:00
    你需要 Python
    ccl945
        10
    ccl945  
    OP
       2018-06-27 09:50:56 +08:00
    @weifuqiao1989 上百个这种东西,用 kettle 我得画上百个 job,还要找个调度平台调度 kettle job
    fds
        11
    fds  
       2018-06-27 11:08:05 +08:00
    用 python 的话就是先拿取任务,验证下 sql 合法性,到数据库执行一下,结果找个 xlsx 库包装成 excel,然后连个邮件服务器发送即可。
    Senorsen
        12
    Senorsen  
       2018-06-27 11:08:49 +08:00 via Android
    metabase 了解一下,就是干这事儿的。
    rizon
        13
    rizon  
       2018-06-27 11:11:24 +08:00
    我有这个程序,自己开发的。
    1.目前支持 sql 执行后生成 excel 发邮件。
    2.但是可以扩展支持其他脚本的执行。
    3. 程序支持动态处理 sql (文本替换处理)
    例如:你的一个 sql 是查询当前日期的前一天的数据,那么程序可以通过配置脚本来实现自动替换 sql 文件中的相应的占位符(where 条件)
    4.可传参数,批量执行 sql
    5.所有 sql 和邮件等均是页面配置
    6.支持多数据源
    7.一个超简单的账户权限分配管理
    Senorsen
        14
    Senorsen  
       2018-06-27 11:13:36 +08:00 via Android
    补充一下,metabase 是可以放一些不同的 SQL (称作“ question ”),自动拉取结果,绘制表格、统计图,可以分别配置发送邮件。
    rizon
        15
    rizon  
       2018-06-27 11:29:09 +08:00
    这个我目前还没完全开发完,当初是针对公司的一个变态报表业务开发,虽然是完全自主开发的(自己对的需求,自己提出的解决方案以及自己开发的),但是这种情况不知道到底能不能拿出来开源啊(在公司做出来的东西理论上都是只有署名权啊),

    希望有大佬来指点一下,这个程序的当前版本已经支撑了目前的公司业务场景,但是我想在 github 上开源,继续去维护和开发新的功能,不知道这样做可以吗?????

    公司的报表业务之前是由运营人员来维护的一堆 sql,但是这堆 sql 包含着复杂的日期逻辑,比如获取今年每个月的数据汇总,获取上周和上上周的数据对比,除了日期还有其他参数的一些业务逻辑。
    所以开发了这个程序,

    该程序主要解决的痛点就是 sql 不是固定的,而是因为参数不同而产生变化
    rizon
        16
    rizon  
       2018-06-27 11:50:00 +08:00
    ![5b3305eb1bb2b.jpg]( https://i.loli.net/2018/06/27/5b3305eb1bb2b.jpg)
    ![5b3305e425761.jpg]( https://i.loli.net/2018/06/27/5b3305e425761.jpg)
    ![5b33069a5926d.png]( https://i.loli.net/2018/06/27/5b33069a5926d.png)
    ![5b3306ebd83cd.png]( https://i.loli.net/2018/06/27/5b3306ebd83cd.png)

    概念上,scriptbot 分为三个模块,脚本,脚本组,任务。
    1. 脚本模块 配置 sql 等可执行脚本,每个脚本隶属于一个脚本组,每个脚本生成一个 sheet。
    2. 脚本组模块 配置每个脚本组的收件人,每个脚本组生成一个 excel,一个邮件可以发送多个脚本组
    3. 任务模块,则是批量执行脚本组

    程序支持通过动态配置 js 脚本(虽然采用 js 脚本是一种不是非常合适的方案吧)来对任务进行一些处理,借助 js 脚本可以实现很多东西。比如有两个事业部们要接收报表数据,但是他们使用的 sql 其实是完全一样的只是部门过滤条件不一样,那么就只需要配置一个 sql 脚本,两个事业部的脚本组可以复用同一个 sql 脚本,通过脚本组中的 js 脚本来动态替换事业部。

    程序现在还没做完,很多功能还只停留在“又不是不能用”的阶段,等有时间的话决定填坑做完。
    liprais
        17
    liprais  
       2018-06-27 11:52:24 +08:00
    写两个脚本
    第一个把要发的数据放到表里
    第二个把这个表做成一个表格发出去
    搞定收工
    oisc
        18
    oisc  
       2018-06-27 11:57:02 +08:00
    ccl945
        19
    ccl945  
    OP
       2018-06-27 11:58:15 +08:00
    @rizon 大佬,你的程序开源么
    SbloodyS
        20
    SbloodyS  
       2018-06-27 12:14:47 +08:00
    这不就是个定时邮件推送的 BI 需求么。。。
    anotherlf
        21
    anotherlf  
       2018-06-27 12:51:03 +08:00 via Android
    用 PHP 写一个啊,简单 excel 的话,用那个 xlsxwriter 库,然后用 mail 发出去。
    rizon
        22
    rizon  
       2018-06-27 14:37:51 +08:00
    @ccl945 还没开发完,还没到那种部署即用的地步,,,过段时间整理一下项目后可能会推到开源社区
    odirus
        23
    odirus  
       2018-06-27 14:41:44 +08:00
    。。。我要求我们的运维这么做,他不会有想法吧。
    justff
        24
    justff  
       2018-06-27 14:42:33 +08:00
    @odirus 这就尴尬了。。
    xiaogui
        25
    xiaogui  
       2018-06-27 14:46:33 +08:00
    java 语言的话,EasyPoi 了解下
    privil
        26
    privil  
       2018-06-27 15:02:22 +08:00
    @odirus #23 你写好程序让人部署就没事,哈哈哈
    c6h6benzene
        27
    c6h6benzene  
       2018-06-27 15:04:15 +08:00 via iPhone
    Excel 可以直接从数据库拉数据的来着。
    957204459
        28
    957204459  
       2018-06-27 15:05:14 +08:00 via iPhone
    so easy,我也是运维自己写了个和你同样的需求
    Sherlocker
        29
    Sherlocker  
       2018-06-27 17:13:49 +08:00
    这不是运维的基本技能嘛
    mingyun
        30
    mingyun  
       2018-06-27 17:33:44 +08:00
    写代码了,邮件定时发送
    torment5524
        31
    torment5524  
       2018-06-27 17:44:04 +08:00
    写过一个自用的,java 做的,操作系统计划任务定时调用 poi 做 excel 操作,javamail 登陆邮箱发邮件,jdbc 连接数据库
    kslr
        32
    kslr  
       2018-06-27 17:49:41 +08:00
    那为什么不发两份呢,一份 excel 一份 sql 简单不就解决了
    night98
        33
    night98  
       2018-06-27 19:01:30 +08:00
    poi 了解一下,写个这个应该一周就搞得差不多了吧。
    wayne1027
        34
    wayne1027  
       2018-06-27 19:13:20 +08:00
    art 开源轻量级在线报表平台,可定时执行 job
    http://art.sourceforge.net/
    Tink
        35
    Tink  
       2018-06-27 20:46:30 +08:00 via iPhone
    这很难?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   918 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:54 · PVG 03:54 · LAX 11:54 · JFK 14:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.