zoukankan      html  css  js  c++  java
  • 导出excel,数据库及kettle

    一、js获取指定月份的最后一天

      使用new Date(year,month,0)的方式:https://www.cnblogs.com/javascript9527/p/12957193.html

    //获取当前日期
    var now = new Date();
    var nowYear = now.getFullYear();//当前年
    var nowMonth = now.getMonth()+1; //当前月
    var nowDay = now.getDay();//当天
    
    //获取指定年份和月份的该月的最后一天
    var lastDay= new Date(nowYear,nowMonth,0).getDate();

     二、使用POI导出excel

       使用HSSF方式可以用纯java代码来读取、写入、修改excel文件,参考如下:

       java导出excel详解:https://blog.csdn.net/w893932747/article/details/89354979
       java导出excel案例:https://www.cnblogs.com/minixiong/p/11149281.html
       springmvc生成excel:https://blog.csdn.net/yudiandemingzi/article/details/80204794

    三、java保留两位小数 

    double d = 111231.5585;
    String.format("%.2f", d);

      java保留两位小数的方法:https://www.cnblogs.com/Renyi-Fan/p/7643764.html

    四、数据库知识

     (1)数据排序

             mysql使用order by不起作用:原因是order by是varchar类型的,在字段后面加上"+0"可转换为int类型。

        参考:https://blog.csdn.net/mastertojava/article/details/86075901

         mysql中查询数据自定义排序:

    mysql中in和order by连用自定义排序
    select * from tablename where fieldname in('',,,) order by field(fieldname,'',,,)
    
    查询某个表按照自定义排序
    select * from tablename order by field(fieldname,'',,,)

     (2)触发器知识:https://blog.csdn.net/xmzhaoym/article/details/3539410

     (3)数据关联同时删除多张表

    数据表关联删除案例:
    DELETE project_basic_info,project_invest_info
    from project_basic_info left join project_invest_info on project_basic_info.project_basic_info_id  = project_invest_info.project_basic_info_id  
    where project_invest_info.tr1_year ="2018"

      关联删除参考:

    https://blog.csdn.net/yun__yang/article/details/53485760?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

    https://blog.csdn.net/iteye_9841/article/details/81972477?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.nonecase

     (4)使用group by之后取每组的最后一条数据

         取分组的最新一条数据:https://blog.csdn.net/HXNLYW/article/details/102681680

         思路:查询的表中先进行排序,但是字符串排序需要加limit,时间类型排序不需要加limit;使用max函数进行查找。

         使用limit查询数据表中所有的数据:https://www.inbeijing.org/archives/1524

    五、kettle同步数据表

      kettle数据更新课程:https://edu.csdn.net/course/play/22044/262426

     (1)增量更新(没有删除):https://www.jianshu.com/p/720529e627c0。如果要实现删除,可以在开始添加一个执行sql脚本,删除目标表数据

     (2)同步更新(增删改查):进行差异化比对,进行同步,提高速度

     (3)表输入表输出,重新拷贝一份,进行插入

     (4)定时任务设置:新建作业,连接转换,发送邮件。发送邮件设置:https://blog.csdn.net/harry5508/article/details/96484235

      kettle使用教程之数据同步:https://www.cnblogs.com/ywjfx/p/10815102.html

      

      kettle做数据同步总结:

      要求:在数据同步之前先判断data_flag表的状态,如果有状态是A的数据,然后就执行数据更新,数据更新完成之后改变data_flag表为P

      思路:在每个数据表同步之前先做判断,使用switch,由于是根据值去不同的分支,本例中分为两类,有数据,无数据,因此需要在每个转换之前都做判断,如果没有数据为A的,那么就选择空操作,什么也不做,如果有数据为A的,就到数据同步的转换,因为数据同步有原表和目标表两个分支,switch没法同步执行,所以就直接链接到转换,最后把所有需要同步的表都进行串联,最后再进行数据表更新操作,也就是需要一个表一个表同步,否则一个执行完成之后直接修改状态其他表就不再更新,数据更新也做成转换的形式,里面放执行SQL脚本操作,这样当所有的表都进行更新完成之后就会修改表的状态,最后成功。

       如果kettle的switch所有的分支都执行,那么需要把switch的分支替换成trans,即把要执行的内容封装到trans中,然后在switch中调用。kettle的内部运行机制:如果sql没有任何参数,不管放到流程的哪个步骤,都是最先执行的。

      参考:https://wenwen.sogou.com/z/q860012672.htm

  • 相关阅读:
    java多线程api
    java多线程
    java代理
    java程序员常用的linux命令
    java泛型
    java反射
    日期和时间
    java集合
    Nodejs mac版安装
    for in、each; for 、forEach、map
  • 原文地址:https://www.cnblogs.com/cxli99/p/13037685.html
Copyright © 2011-2022 走看看