java 启动kettle wirte2log转化文件 log怎么记录到数据库

kettle+excel导入数据库
kettle+excel导入数据库
以下内容已过滤百度推广
日&-&一个实战的示例,利用kettle组件导入excel文件到数据库,然后通过java代码调用,完整有效,自由掌控。&&普通
kettle是个开源的etl工具,能将多种形式的数据源数据抓取到数据库中。将excel文件中的数据导入数据库。1.创建一个转换,单击文件-&文件-&转换。2.从输入菜单中...&&普通
kettle将excel数据导入oracle过程记录如下:1、准备excel文件注意:excel文件要有字段名称说明:如这里建立一个简单测试表,有3个字段:id,name,age...&&普通
日&-&案例目的:当excel中有几万条记录或者更多数据时,使用kettle导入到数据库中。速度就能感到比复制粘贴快很多。这里我会演示将&data.xlsx&表中数据有15万多条记录,...&&普通
日&-&利用kettle组件导入excel文件到数据库 1 实现目标 把excel文件内容导入到目标表中;然后用java调用kettle的转换。excel文件的内容只有两列,示例如下:&&普通
日&-&以mysql数据库为例
首先使用navicat客户端将需要转移数据的表的数据导出到excel中,确保导出的excel表包含标题。也可以其他途径获取的excel。启动ket...&&普通
日&-&需要通过excel进行数据获取,需要准备一个excel,因为kettle对excel的支持不是很好,所以支持2003之前的格式。我们创建一个文件,如图:创建一个新的transf...&&普通
etl工具—kettle数据的导入导出—批量excel表到数据库 案例目的:如果你有一堆收上来,表结构相同的excel表格,把他们放在了一个文件夹下,向批量导入到数据库中的一...&&普通
日&-&我用kettle工具把excel里的数据导入到oracle某张表中的时候,报错:“违反完整约束条件- 已找到子记录”。查阅了很多资料,说表关联的原因。求解决办法,...&&普通
最佳答案: 如果一定要用kettle解决的话,写个shell,自动解析excel,然后创建目标表。或者重写kettle的控件。kettle工具安装很简单,从爱好者上拒绝访问下来之后,直接解压到制定的...&&百度知道
14:19&&&&7025971
为什么我的表格下拉的时候都是一样的数字啊,不递增
19:26&&&&2028623
跪求大神进来帮帮我,不然我得赔几万块。
15:29&&&&0700145
求神庇佑:excel的一个数据套到类外一个表格里当前位置: →
→ kettle 的命令调用
kettle 的命令调用
& 作者及来源: Byrd - 博客园 &
&收藏到→_→:
摘要: kettle 的命令调用
"kettle 的命令调用"::
kettle 的 kitchen.bat 后面参数说明:
是一个开源的etl(extract-transform-load的缩写,即数据抽取、转换、装载的过程)项目,项目名很有意思,水壶。按项目负责人matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出。kettle包括三大块:
&&&spoon&&转换/工作(transform/job)设计工具 (gui方式)
&& kitchen&&工作(job)执行器 (命令行方式)
&&&span&&转换(trasform)执行器 (命令行方式)
kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高
效稳定。kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
因为最近工作需要所以不得不研究下调用kitchen.bat后面接参数的问题。
经过一段时间的研究终于知道传参的方法了。
kitchen.bat&& 后面可以是-也可以是/然后再加options
/rep&&&&&&& : repository name
/user&&&&&& : repository username
/pass&&&&&& : repository password
/job&&&&&&& : the name of the job to launch
/dir&&&&&&& : the directory (dont forget the leading /)
/file&&&&&& : the filename (job xml) to launch
/level&&&&& : the logging level (basic, detailed, debug, rowlevel, error, nothing)
/logfile&&& : the logging file to write to
/listdir&&& : list the directories in the repository
/listjobs&& : list the jobs in the specified directory
/listrep&&& : list the available repositories
/norep&&&&& : do not log into the repository
/version&&& : show the version, revision and build date
/param&&&&& : set a named parameter &name&=&value&. for example -param:foo=bar
/listparam : list information concerning the defined parameters in the specified job.
/export&&&& : exports all linked resources of the specified job. the argument is the name of a zip
而options 后面可以是=也可以是:也可以是空格
kitchen.bat /file d:\&& 或者 -file=d:\ 或者/file:d:\等等都可以。。。
定时执行的代码参考如下【原创】,可以执行的实例
1、windows下的执行方式:
建立一个.dat的文件,里面写入
cd d:/kettle-3.0.2
kitchen.bat /norep -file=d:/kettledata/mysal2orcle.kjb && kitchen_%date:~0,10%.log
保存文件。
解释一下上面的语句
cd d:/kettle-3.0.2 这句的含义是跳转到kettle的根目录,因为kitchen.bat 文件在根目录下
kitchen.bat /norep -file=d:/kettledata/mysal2orcle.kjb && kitchen_%date:~0,10%.log
上面的含义是,使用kitchen.bat 命令来执行job文件,job文件的存放路径是d:/kettledata/mysal2orcle.kjb,并且将执行的结果输出到&kitchen_%date:~0,10%.log文件中。
2、linux下的书写格式:
cd /home/kettle-3.0.2 这句的含义是跳转到kettle的根目录,因为kitchen.bat 文件在根目录下
./kitchen.sh -file=/home/etl/.kjb && /home/etl/log/kettle.log
然后这个文件在crontab中去执行
注意:linux执行shell过程中,由于linux对权限要求很严格,所以kitchen.sh必须有可执行的权限。前面必须加上./,也就是./kitchen.sh才能执行,否则会提示找不到此命令。
kitchen.bat的使用方法:
kitchen.bat /file:d:\job_name.kjb /level:basic&&d:\etl.log
使用心得:
1.file和level都是前面有&/&,后面有&:&,任何一个都不能丢。
2.此语句要在一行上完成,中间不能有换行符之类的。
博主从昨天此文来自: 马开东博客
转载请注明出处 网址:
就开始调试的几个bat文件,始终不能在我指定的文件里面记日志,一直在dos界面记录,苦思不得其果,偶然的一个把bat文件全屏之后,发现原来语句被换行了,修改到同一行之后可以顺利的运行。
3.此语句后面不能接任何语句,就算你在bat文件里面添加了别的语句,也不会得到执行,查阅了好多资料,没有发现解决办法,逼不得已,我只能把job做成了一个一个单独的bat文件,这个有点儿杯具。
4.jdk或者jre很重要。
博主因为服务器上没有配置java环境,吃了不少苦。
先是没装java环境,无法运行kettle;接着装好了java环境之后,job和转换可以正常运行,但是kitchen.bat语句不能正常运行,又查阅了一堆资料后发现,原来是环境变量的问题,设置了环境变量之后总算可以正常运行了。
set "ymd=%date:~,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
cd d:\dev\kettle
echo execute_time:%ymd%&d:\dev\kettle\zijinjob\log.txt
call kitchen.bat /norep /file=d:\dev\kettle\zijinjob\emp_capital_ri.kjb& && d:\dev\kettle\zijinjob\log.txt
注意!在调用过程中可能会出现下列的错误,需要检查路径中是否有中文:
&error: kitchen& can't& continue& because the job couldn't& be& loaded &搜索此文相关文章:此文来自: 马开东博客
网址: 站长QQ
kettle 的命令调用_博客园相关文章
博客园_总排行榜
博客园_最新
博客园_月排行榜
博客园_周排行榜
博客园_日排行榜kettle 日志保存到数据库r_log - ITeye问答
我的项目中整合kettle,在执行任务,记录日志,对于日志。有些疑惑。
kettle的日志记录在文件中。
kettle数据库中创建资源库时创建了r_log表。
但发现执行job后,r_log 表里面并没有日志。
以上是我的猜想,r_log表应该是记录日志的。但我的资源库r_log表中并没有记录。
我想请教大家,r_log表,是否因为我的配置不完全导致,没有数据。
或者r_log表是其它用途。
请熟悉的kettle的给予我解答,谢谢!
问题补充:andilyliao 写道具体哪个表我忘记了 不过kettle是可以把日志记录在资源库中的 你需要通过菜单的日志配置中的sql按钮把日志表建立。
你说的那个(菜单的日志配置中的sql按钮把日志表建立)确实是日志表,
但资源库中的r_log表依然没有数据,
没有发现和r_log的联系。。。
r_log 表在资源库中有何作用,
如何使用这个表。。。
能否提供关于这个资源库日志表r_log相关的资料。
采纳的答案
这个建议你读代码吧 我们当时都是读代码跟踪的 没法子 kettle的文档不是很详细
这个没有资料 我们当时都是自己试出来的 呵呵
具体哪个表我忘记了 不过kettle是可以把日志记录在资源库中的 你需要通过菜单的日志配置中的sql按钮把日志表建立。
已解决问题
未解决问题Java 应用程序中集成kettle
查看: 6238|
摘要: 如果你需要在自己的 应用程序中集成 一般来说有两种应用需求: 一种是通过纯设计器来设计ETL 转换任务,然后保存成某种格式,比如xml 或者在数据库中都可以,然后自己调用程序解析这个格式,执行这种转换,是比较抽
& 如果你需要在自己的 应用程序中集成 一般来说有两种应用需求:& 一种是通过纯设计器来设计ETL 转换任务,然后保存成某种格式,比如xml 或者在数据库中都可以,然后自己调用程序解析这个格式,执行这种转换,是比较抽象的一种执行方式 ,ETL 里面转换了什么东西我们并不关心,只关心它有没有正常执行。& 另一种是通过完全编程的方式来实现,详细 的控制每一个步骤,需要知道转换执行的成功与否,这种方式可能需要更多的理解 kettle的API 以便更好的跟你的应用程序紧密结合,不过难度也比较大,可以很好的定制你的应用程序,代价自然是入门门槛比较高。& 本文主 的集 成方式,文中所列出的代码节选自 pentaho,不过应用程序本 没有什么关系。Pentaho 集成 的代码主要是两个类,KettleSystemListerner 和KettleComponent ;看名字就猜出&KettleSystemListerner主要是起监听器的作用,它主要负责初始化 kettle的 一 些 环 境 变 量 , 这 个 类 主 要 包 含 四 个 方 法:startup(),readProperties(),enviromentInit(),shutdown(), 程序入口自然是startup() 方法,然后它会调用&enviromentInit()方法,这个方法就调用readProperties()&方法读一个配置文件 kettle.properties,这个文件主要记录kettle 运行时可以调用的一些环境变量, readProperties()方法读完这个文件之后就把里面的键值对转换成变量传给 kettle运行环境 ,当kettle 运行完了之后就调用shutdown() 方法结束转换。& 介绍重点类:KettleComponet& KettleComponet&的方法主要有三种类型,一类是用来初始化工作,做一些验证工作,第二类是执行转换的方法,也是主要需要讨论的方法,第三类 是取得数据结果的,有时候你需要得到转换的结果交给下一个步骤处理。& 当读完了这些配置文件并且验证了之后,&KettleComponet&&就开始把前面读到的转换文件或者资源库类型变成Kettle 的API 这主要是在 executeAction()方法里面进行,它当然根据连接方式也分两种执行类型: 文本执行方式和 资源库连接方式。&&文本执行方式需要接受一个你指定的运行转换的文件或者job 的文件 然后把这个 xml文件解析成kettle 能够执行的模式,根据执行的类型又可以分成两种: trans任务和job 任务。&&两个执行的逻辑差不多,下面先介绍 trans的执行方式: 执行trans 任务 transMeta = new TransMeta(fileAddress,repository,true); transMeta.setFilename(fileAddress);& & 然后他会调用: executeTransformation(TransMeta transMeta, LogWriter logWriter); 这个方法是真正的把前面的transMeta转换成trans对象。&&连接资源库使用的是connectToRepository() 方法 ,先取得RepositoriesMeta 对象,然后根据你在 setting.xml文件里面定义的respository 的名字来连接对应的repository。 理论上来说我们一般都只使用一个repository 但如果在产品中需要使用多个 repository的话,你需要自己配置多个repository 的名字和对应的用户名和密码。&&连接到资源库之后自然是想办法读取数据库的表,把里面的记录转换成为trans 对象,使用的是loadTransformFromRepository, 这个方法的函数原型需要解释一下:TransMetaloadformFormRepository(String directoryName, String transformationName, Repository repository, LogWriter logWriter) &第一个参数String directoryName代表是你存储转换的目录,当你使用kettle图形界面的时候,点击repository菜单的explorer repository,你会发现你所有的东西都是存储在一个虚拟的类似与目录结构的地方,其中包括database connections,transformations,job,usres等,所以你需要的是指定你连接的目录位置,你也可以在目录里在创建目录;String transformationName指的是转换的名字,Repository repository指的是连接的资源库,LogWriter logWriter 指定的是日志输出。& 从资源库读取Job跟Trans的步骤基本是一样的,同样需要指定你存储job的目录位置。示例代码如下:注:此简化代码为以文本文件连接方式时的转换数据方式:Public static void runTransformation(String filename){try{ StepLoader.init(); EnvUtil.environmentInit(); TransMeta transMeta = new TransMeta(filename); Trans trans = new Trans(transMeta); trans.execute(null);//you can pass arguments instead of null trans.waitUntilFinished(); if(trans.getErrors()&0){
throw new RuntimeException("There were errors during transformation execution"); }}catch(KettleException e){
e.printStack();}}
刚表态过的朋友 ()
Pentaho 技术支持电话:
&&&&& Pentaho 技术支持QQ:2253715
Powered by 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
kettle集成应用之---java调用执行transformation和job
下载积分:30
内容提示:kettle集成应用之---java调用执行transformation和job
文档格式:PDF|
浏览次数:588|
上传日期: 21:36:00|
文档星级:
全文阅读已结束,如果下载本文需要使用
 30 积分
下载此文档
该用户还上传了这些文档
kettle集成应用之---java调用执行transformation和job
关注微信公众号

我要回帖

更多关于 kettle java对数据库 的文章

 

随机推荐