开源ETL工具kettle系列之在应用程序中集成
执行Job任务之前还是会读取Job任务的描述文件,然后把这个描述文件(kettle的 .ktr文件)变成一个xml文档的dom : org.w3c.dom.Document doc = XmlW3CHelper.getDomFromString(jobXmlStr); 之后也是初始化对应的元数据对象 job.start(); job.waitUntilFinished(5000000); 连接资源库连接资源库使用的是connectToRepository()方法,先取得RepositoriesMeta对象,然后根据你在setting.xml文件里面定义的repository的名字来连接对应的repository.理论上来说我们一般都只使用一个 repository,但如果在产品中需要使用多个repository的话,你需要自己配置多个repository的名字和对应的用户名和密码。只列出几行关键代码, repositoriesMeta = new RepositoriesMeta(logWriter); //从$HOME/.kettle/repositories.xml 读数据. repositoriesMeta.readData(); repositoryMeta = repositoriesMeta.findRepository(repositoryName); repository = new Repository(logWriter,repositoryMeta,userInfo); userInfo = new UserInfo(repository,username,password); 从资源库读取Trans TransMetaloadTransformFromRepository(String directoryName,String transformationName,Repository repository,LogWriter logWriter) 第一个参数String directoryName 代表是你储存转换的目录,当你使用kettle 图形界面的时候,点击repository菜单的explorer repository,你会发现你所有的东西都是存储在一个虚拟的类似与目录结构的地方,其中包括database connections,transformations,job,users 等,所以你需要的是指定你连接的目录位置,你也可以在目录里面再创建目录。 repositoryDirectory=repository.getDirectoryTree().findDirectory(directoryName); transMeta = new TransMeta(repository,transformationName,repositoryDirectory); 从资源库读取Job JobMeta loadJobFromRepository(String directoryName,String jobName,LogWriter logWriter) 读取结果集 Object pentahoRow[] = new Object[results.getColumnCount()]; for (int columnNo = 0; columnNo < results.getColumnCount(); columnNo++) { Value value = row.getValue(columnNo); switch (value.getType()) { case Value.VALUE_TYPE_BIGNUMBER: pentahoRow[columnNo] = value.getBigNumber(); break; ........ results.addRow(pentahoRow); (编辑:瑞安网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |