于2022年3月8日优化,操作更简单 新文章地址,可互应参考https://blog.csdn.net/RatherI/article/details/123350552https://blog.csdn.net/RatherI/article/details/123350552

Kettle 获取WebService数据 解析并存入Oracle数据库

工具

  1. kettle 9.1 (版本影响不大)
  2. oracle11g

官方模板

官方案例:E:\data-integration\samples\transformations

流程简介

  1. 通过 生成记录 生成入参
  2. 取巧 通过 变量替换 动态替换年月信息
  3. 通过 执行sql脚本 删除数据库的当前年月的数据,然后重新插入数据
  4. Web服务查询 请求WebService
  5. get data fro xml 解析xml 头数据
  6. 我这里因为回参未转义 所以用 JsScript代码 转义。也可以用字符串替换 来替换。或者有更好的方式欢迎留言
  7. get data fro xml 解析xml内容,需要对字段
  8. 表输出

遇到的问题

1. java.lang.IllegalArgumentException: Entity may not be null

对方提供的入参是 <ROOT><ND>2021</ND><YD>03</YD></ROOT>,然后就一直报错,他们也能查出来。就我查不出,可纳闷。

解决方式:在入参的时候 再包一层  <![CDATA[    你的入参    ]]>

<![CDATA[<ROOT><ND>2021</ND><YD>03</YD></ROOT>]]>

2.kettle回参&lt;<  &gt; > 转义了,导致不能解析

问题:虽然这样解决了 但是还遇到一个问题没解决,就是如果回参的字段里包含'<' '>'   比如:<MC>材料(<100元)</MC> 还是会无法解析,这个和接口商有关 让他们在字段添加 <![CDATA[  材料(<100元)   ]]>,或者直接让他们转义

解决方式: 这里取巧了,不知道有没有更好地方式。 使用的JsScript代码 进行的转义,或者使用字符串替换 替换掉。

//Script here
var result = result;
var xmlInfo = result.replace(/&lt;/g,"<").replace(/&amp;lt;/g,"<").replace(/&amp;gt;/g,">").replace(/
/g,"").replace(/&gt;/g,">");

如果使用字符串替换,替换内容按自己需要修改

3.动态年月条件

因为项目需要做定时任务,所以需要根据变量进行动态查询。

解决方式:给定一个字符串,使用字符串替换,替换成变量。可以在运行的时候填参数。

点击运行后,选择变量,进行填参数

4. Kettle获取系统时间做动态年月

上边是测试或者手动执行使用,因为要做定时任务,所以需要获取系统时间。

设置成变量以后在运行作业的时候 先运行这个设置变量,把变量存储后 使用变量

配置过程/细节

通过 生成记录 生成入参

取巧 通过 变量替换 动态替换年月信息

通过 执行sql脚本 删除数据库的当前年月的数据,然后重新插入数据

Web服务查询 请求WebService

先上一张在页面访问的数据

get data fro xml 解析xml 头数据

*[name()='ExecQueryResponse']/*[name()='ExecQueryResult']

我这里因为回参未转义 所以用 JsScript代码 转义。也可以用字符串替换 来替换。

//Script here
var result = result;
var xmlInfo = result.replace(/&lt;/g,"<").replace(/&amp;lt;/g,"<").replace(/&amp;gt;/g,">").replace(/
/g,"").replace(/&gt;/g,">");

get data fro xml 解析xml内容,需要对字段

因为上一步传的值 是 xmlInfo

第二层解析

对回参数据:名称和XML路径 是一样 直接填回参的字段就可以

表输出

完活收工,如果有更好的方法可以留言一起分享学习

Kettle+WebService+自动获取日期+xml解析并存入Oracle数据库相关推荐

  1. oracle数据库日期格式的运算,修改oracle数据库日期格式

    ORACLE SQL Developer日期显示格式设置 原文:ORACLE SQL Developer日期显示格式设置 ORACLE的SQL Developer工具默认的日期格式DD-MON-RR, ...

  2. 通过JAVA从高德地图URL连接获取json数据 解析并存入数据库的程序举例

    首先 进入高德开放平台 按官网教程获取key 这里以杭州某区域车站信息举例 通过在线解析工具获取json格式的数据 通过此数据建立实体类 package geturl;import java.util ...

  3. oracle exp语句 按日期命名,Windows平台下Oracle数据库exp全备脚本,根据时间保留备份数及自动上备份至FTP...

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. @echo off SET ORACLE_SID=orcl SET NLS_LANG=AM ...

  4. Oracle数据库的自动锁介绍

    DML Locks 行锁TX 行锁和并发性 行锁的存储 表锁TM 锁和外键 锁和没有索引的外键 锁和有索引的外键 DDL Locks 排它DDL锁 共享DDL锁 可中断解析锁 System Locks ...

  5. AxureRP 实战(四)如何自动获取电脑日期和时间

    我们在做页面交互设计时,如何自动获取电脑的日期和时间呢?像下图这样,让设计的产品更有真实感: 以上图的日期时间格式为例:"YYYY-MM-DD hh:mm:ss" 首先,拖入文本标 ...

  6. 自动获取IP发生IP冲突的问题

    自动获取IP,公司局域网内,今天突然出现IP冲突「IP地址与网络上的其他系统有冲突」,不能上网.把网络连接关了,在重新启动,可以上网2-3秒,然后又会出现IP冲突的提示,无法上网.使用计算机的操作系统 ...

  7. 详解ORACLE数据库硬解析、软解析、软软解析

    概述 TOM大叔的调优书中说过一句话,大概意思就是:如果有人让我写本怎样让ORACLE性能最慢的书的话我会将取消绑定变量(bind variable)做为书的第一章和最后一章,可见绑定变量的重要性.而 ...

  8. 单元格等于计算机日期,《excel表格怎样自动填写日期》 Excel单元格中自动获取当前日期与时间...

    在excel里如何在单元格内用快捷键使之显示当前日期或时间 Ctrl : 当前日期Ctrl Shift : 当前时间 EXCEL表格中只显示日期不要显示时间 右击"单元格格式"设置 ...

  9. java获取微信xml数据格式的文件_(5)微信二次开发 之 XML格式数据解析

    1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...

最新文章

  1. Windows 终端神器 MobaXterm,免费版可以在公司环境下使用
  2. 【博客话题】我的Linux虽然年轻,但是已经喜欢上她了...
  3. spring 两次进入拦截器_Spring Boot+Redis 扛住,瞬间千次重复提交(实例)
  4. bzoj1007[HNOI2008]水平可见直线
  5. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 80 Days(双向队列+尺取法)
  6. mysql 织梦 优化,优化分析:分享织梦搭建和后台优化设置
  7. spring框架的引入
  8. 如何判断脚本执行成功
  9. 统计字符串中每个字符的个数_C++程序设计——统计数字字符个数
  10. 实习成长之路:MySQL八:普通索引和唯一索引,应该怎么选择?
  11. PC微信防撤回多开补丁 v0.6
  12. Ubuntu 安装 Intel 显卡驱动
  13. DEDE源码分析与学习之二: member文件结构说明
  14. 142Echarts - 矩形树图(Disk Usage)
  15. 模拟器桥接模式下 WLAN 无法连接及安卓 7.0+ 无法抓包 HTTPS 的解决
  16. 清除90天苹果充值记录_王者荣耀安卓苹果跨系统角色转移服务,限量测试收费99元...
  17. 知道生产日期和保质期来计算有效期至的方法和代码
  18. Python爬虫(二十二)_selenium案例:模拟登陆豆瓣
  19. 绕过CDN查询真实IP
  20. 恒源云(GPUSHARE)_可构建AI的「AI」诞生?

热门文章

  1. ubuntu 18.04 网络图标不见的问题解决方案
  2. 永远的伊苏 2 Mac版 | 适用于MacOS10.15系统的经典游戏《永远的伊苏 2》中文版
  3. Discuz论坛实用留言签名代码
  4. 【vite+vue3】 多页面应用模式
  5. C# Firebird SQL 语句带参数书写
  6. python网站安全(一): XSS注入
  7. linux重定向多个文件,cat命令利用Linux重定向合并文件
  8. Nginx 反向代理、负载均衡、虚拟主机
  9. 给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单
  10. mybatis查询时间段数据