热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

datax-webExecutorJobHandler如何修改源码解决sqlserver时间格式不识别时间字符串中的%

今天就跟大家聊聊有关datax-webExecutorJobHandler如何修改源码解决sqlserver时间格式不识别时间字符串中的%,可能很多人都不太了解,为了让大家

今天就跟大家聊聊有关datax-web ExecutorJobHandler如何修改源码解决sqlserver时间格式不识别时间字符串中的%,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

问题:

select * from dbo.SKJJGWFGXX where (i_time >= &#39;1980-01-01%00:00:00&#39; and i_time <&#39;2020-12-15%15:25:40&#39;) 具体错误信息为:com.microsoft.sqlserver.jdbc.SQLServerException: 从字符串转换日期和/或时间时,转换失败。

时间字符串中带%,mysql数据库能识别并正确执行,而sqlserver数据库(2008)不能识别,造成查询失败。

如果此问题不解决,那么从sqlserver到mysql的数据同步中,无法采用时间增量方式进行数据实时同步。

在java中和python中都尝试把“%”换成空格,最后的结果都是无法运行。估计是在命令行中做为参数传入时,空格本身是特殊符号,用于分开命令和参数的,强行替换,最后导致时间字符串被分成两段接收。

解决方案:

修改ExecutorJobHandler,生成job临时文件时,把临时文件中的变量用具体值进行替换。

datax-web ExecutorJobHandler如何修改源码解决sqlserver时间格式不识别时间字符串中的%

定义了一个新的处理方法:replaceJobJsonParams

datax-web ExecutorJobHandler如何修改源码解决sqlserver时间格式不识别时间字符串中的%

// zhuangxl 2020.12.15 替换开始

String jobJson = new String(trigger.getJobJson());

jobJson = replaceJobJsonParams(jobJson, trigger);

tmpFilePath = generateTemJsonFile(jobJson);

// zhuangxl 2020.12.15 替换结束

/**

 * 替换job文件参数

 * @author zhuangxl

 * @param jobJson

 * @return

 */

private String replaceJobJsonParams(String jobJson, TriggerParam trigger) {

    if (IncrementTypeEnum.TIME.getCode() == trigger.getIncrementType()) {

        String replaceParamType = trigger.getReplaceParamType();

        //类别:时间自增,只操作指定了具体的时间格式的类型

        if (StringUtils.isNotBlank(replaceParamType) && !replaceParamType.equals("Timestamp")) {

            //格式化时间字符串

            SimpleDateFormat sdf = new SimpleDateFormat(replaceParamType);

            String endTime_ = sdf.format(trigger.getTriggerTime());

            String startTime_ = sdf.format(trigger.getStartTime());

            //识别要替换的时间变量名称

            String[] replaceParams = trigger.getReplaceParam().split(" ");

            String startTimeStr = replaceParams[0].substring(replaceParams[0].indexOf("D")+1, replaceParams[0].indexOf("="));

            String endTimeStr = replaceParams[1].substring(replaceParams[1].indexOf("D")+1, replaceParams[1].indexOf("="));

            //执行变量替换

            jobJson = jobJson.replace("${"+startTimeStr+"}", "&#39;"+startTime_+"&#39;");

            jobJson = jobJson.replace("${"+endTimeStr+"}", "&#39;"+endTime_+"&#39;");

        }

    }

    return jobJson;

}

看完上述内容,你们对datax-web ExecutorJobHandler如何修改源码解决sqlserver时间格式不识别时间字符串中的%有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程笔记行业资讯频道,感谢大家的支持。


推荐阅读
  • 本文详细介绍了Python中的流程控制与条件判断技术,包括数据导入、数据变换、统计描述、假设检验、可视化以及自定义函数的创建等方面的内容。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 本文介绍了如何在Spring框架中配置和使用定时任务,包括初始化配置和动态启动定时器的方法。通过示例代码展示了如何利用Spring的TaskScheduler接口来创建和管理定时任务。 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 本文旨在为初学者提供一个详细的指南,从零开始学习如何使用 ASP.NET MVC5 和 Entity Framework 6 (EF6) 搭建项目。通过逐步指导,帮助读者理解 MVC 架构的核心概念,并掌握基本的操作方法。 ... [详细]
  • SecureCRT 使用指南与技巧
    本文详细介绍 SecureCRT 软件的基本功能,并分享了一些实用的操作技巧,旨在帮助用户提高远程管理效率。 ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • 本文探讨了如何从文本文件中正确读取一行数据,并将其赋值给C语言中的变量,同时解决了常见的错误和注意事项。 ... [详细]
  • Web网络基础
    目录儿1使用HTTP协议访问Web2HTTP的诞生2.1因特网的起源2.2互联网、因特网与万维网2.3万维网与HTTP3网络基础TCPIP3.1TCPIP协议族3.2TCPIP的分 ... [详细]
  • 本文介绍了一种算法,用于在一个给定的二叉树中找到一个节点,该节点的子树包含最大数量的值小于该节点的节点。如果存在多个符合条件的节点,可以选择任意一个。 ... [详细]
  • J2EE平台集成了多种服务、API和协议,旨在支持基于Web的多层应用开发。本文将详细介绍J2EE平台中的13项关键技术规范,涵盖从数据库连接到事务处理等多个方面。 ... [详细]
  • 本文探讨了在当前开发环境中使用Django 1.5和Python 3.3的情况下,如何解决AWS和GAE仅支持Python 2.7的问题,并提供了相应的解决方案。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 作为一名CSS初学者,我在博客园中尝试通过CSS美化页面,特别是为超链接添加图标,以提升阅读体验。本文将分享如何使用CSS和字体图标库来实现这一功能。 ... [详细]
  • 解决Office 2000安装时出现错误1933的问题
    本文介绍了在安装Office 2000过程中遇到错误1933时的解决方案,包括如何定位问题和修复步骤。 ... [详细]
author-avatar
快乐碧云轩在江湖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有