很多站长朋友们都不太清楚php调用kettle,今天小编就来给大家整理php调用kettle,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 使用kettle获取数据库的字段时会报错,错误信息如下,求高手解答 2、 配置kettle时遇到的匪夷所思的问题 3、 python可以调用kettle作业吗 4、 web如何调用kettle来进行数据的采集 5、 kettle怎样连接数据库连接 使用kettle获取数据库的字段时会报错,错误信息如下,求高手解答在PB开发过程中,由于数据库中使用了 ntext字段,出现以下提示错误,郁闷了很长时间找不到解决方案,后查阅大量资料,终于明白:PB报错: 不能用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本将 ntext 数据或仅使用 Unicode 排序规则的 Unicode 数据发送到客户端。————————————————由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型字段的时候会抱错。 如果 title 字段类型为 nvarchar,content 字段类型为 ntext ,那么下面的sql语句会报错:select title,content from article 正确的写法是:select convert(varchar(255),title) as title, convert(text,content) as content from article 或者不使用ntext字段这个很受用,解决我的难题!
配置kettle时遇到的匪夷所思的问题之前借用别人的笔记本配置了kettle, 开发完成后更换了自己的笔记本, 再次配置kettle的时候发现kettle打不开了, 现在附上安装kettle流程和遇到问题解决的思路和办法
这次工作中用到的是经过公司封装的kettle, 免安装版, 不是公司封装的也是免安装的好像, 只需要将压缩包解压即可
kettle是一个纯java开发的工具, 所以配置kettle之前一定要配置上java环境, 网上说java版本至少要在1.6以上, 但是自己安装中发现只有1.8版本的jdk可以正常运行kettle, 这个应该跟kettle的版本也有关, 为此我同时安装了1.6、1.7、1.8三个版本的jdk.
jdk的配置这里就不讲了, kettle的配置本身只需要一个环境变量, 新建一个变量名为 KETTLE_HOME , 变量值为 压缩包解压路径 的环境变量即可
环境和安装都完成后, 我们直接打开kettle解压目录, 运行Spoon.bat文件就可以打开kettle了, 但这才是我遇到问题的开始
1) 如果电脑内存不大的话可能会遇到创建JVM失败的提示(ERROR:could not create the java virtual machine!), 这是因为kettle默认给JVM虚拟机分配的内存比较大, 我们给他调小一点, 打开Spoon.bat, 将
改为
2) 如果遇到提示could not find the main class. Program will exit! 这表示你的jdk有问题, 这不单单是kettle会出现这个提示, 任何java程序如果jdk出现问题, 或者jdk版本不对都有可能报这个错, 我们重新安装一遍jdk或者换个版本就可以解决这个问题.
在kettle这里我们可以单独为kettle配置一个环境变量以解决这个问题, (感觉这个方式是为了解决kettle的jdk版本和当前系统不一样的问题), 在环境变量中创建一个变量名为 PENTAHO_JAVA_HOME , 变量值为 kettle兼容的jdk版本路径 即可.
这个时候我们的系统变量里有两个指向jdk路径的变量, 一个是java_home,一个是pentaho_java_home, 感觉这是为了解决kettle需要的jdk与当前系统中的jdk不一样的办法.
运行Spoon.bat的时候, 弹出cmd终端窗口, 直接闪退.
遇到这个问题真的是把我给难住了, 一点没有错误信息, 没有排查问题的切入点,
思考 :
.bat文件应该是一个脚本语言, 它调用其他的文件才能启动kettle, 它弹出cmd后没有报错而是退出了, 应该是运行的没有问题, 下面它应该启动kettle了, 但是没有动静, 这就可能是它调用其他文件的时候, 其他文件损坏了或者丢失了. 我们重新安装一下这个软件可以排除这个问题.
我最开始觉得解压后的kettle有问题, 把kettle删了, 再删的时候等不及又往桌面解压kettle...虽然没有提示, 但是肯定是这删了点什么文件...后来又重新装了一遍才解决.
解决这种问题的时候 只能靠自己, 千万不能慌, 要稳定心态, 思考启动的流程, 是哪个流程出现了错误, 这样才能解决问题 , 不然会卡很久, 严重降低工作效率. 心态不好的时候, 可以稍微歇5分钟, 计算机这种东西, 说不定重启都能解决bug, 透透气, 换个角度看
python可以调用kettle作业吗是可以的,之前子健老师的课程里面有提到。但是我个人推荐的是使用Python,直接使用Python去请求api.然后解析XML文件,毕竟快速解析还是重要的业务实现。
web如何调用kettle来进行数据的采集如下为Java调用本地的转换文件,其中String[] params就是参数,示例传递了两个参数:“123”, “234”,传递的参数全部是字符串类型,使用时需要转换成具体的格式:
[java] view plaincopy
/**
* 调用本地的转换文件(带参数)
*
* @Description:
* @param transFileName
* @throws KettleException
* @author 李文锴
* @since:2012-8-15 下午02:58:54
*/
public static void callNativeTransWithParam(String transFileName) throws KettleException {
// 初始化
EnvUtil.environmentInit();
StepLoader.init();
// 转换元对象
TransMeta transMeta = new TransMeta(transFileName);
// 转换
Trans trans = new Trans(transMeta);
String[] params = {"123", "234"}; // 传递参数
// 执行转换
trans.execute(params);
// 等待转换执行结束
trans.waitUntilFinished();
}
kettle怎样连接数据库连接java调用kettle数据库类型资源库中的ktr此问题在1个月前或许已经接触,单是一直木有怎么用到,就被耽搁至今;问题的解决要来源于网络,其实我还想说问题的解决的是要靠我们自己的思想,不过多的言情,我们接下来直接进入主题吧!环境:kettle-spoon4.2.0,oracle11g,myeclipse6.5,sqlserver2008前提:在kettle图形界面spoon里面已经做好了一个ktr转换模型,此时我的ktr信息如下图:Step1:在myeclipse创建project,导入kettle集成所需要的包Step2:重点解析与code源码//定义ktr名字privatestaticStringtransName="test1";//初始化kettle环境KettleEnvironment.init();//创建资源库对象,此时的对象还是一个空对象KettleDatabaseRepositoryrepository=newKettleDatabaseRepository();//创建资源库数据库对象,类似我们在spoon里面创建资源库DatabaseMetadataMeta=newDatabaseMeta("enfo_bi","Oracle","Native","ip","sid","port","username","password");//资源库元对象,名称参数,id参数,描述等可以随便定义KettleDatabaseRepositoryMetakettleDatabaseMeta=newKettleDatabaseRepositoryMeta("enfo_bi","enfo_bi","kingdescription",dataMeta);//给资源库赋值repository.init(kettleDatabaseMeta);//连接资源库repository.connect("admin","admin");//根据变量查找到模型所在的目录对象RepositoryDirectoryInterfacedirectory=repository.findDirectory("/enfo_worker/wxj");//创建ktr元对象TransMetatransformationMeta=((Repository)repository).loadTransformation(transName,directory,null,true,null);//创建ktrTranstrans=newTrans(transformationMeta);//执行ktrtrans.execute(null);//等待执行完毕trans.waitUntilFinished();上面的两个步骤才可以确定是资源库中的那个路径下的ktr和我们用命令执行一样的-dir,-tran-job附上源码:packagekettle;importorg.pentaho.di.core.KettleEnvironment;importorg.pentaho.di.core.database.DatabaseMeta;importorg.pentaho.di.core.exception.KettleException;importorg.pentaho.di.repository.Repository;importorg.pentaho.di.repository.RepositoryDirectoryInterface;importorg.pentaho.di.repository.kdr.KettleDatabaseRepository;importorg.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;importorg.pentaho.di.trans.Trans;importorg.pentaho.di.trans.TransMeta;/***Title:java调用kettle4.2数据库型资料库中的转换*Description:*Copyright:Copyright()2012*/publicclassExecuteDataBaseRepTran{privatestaticStringtransName="test1";publicstaticvoidmain(String[]args){try{//初始化kettle环境KettleEnvironment.init();//创建资源库对象,此时的对象还是一个空对象KettleDatabaseRepositoryrepository=newKettleDatabaseRepository();//创建资源库数据库对象,类似我们在spoon里面创建资源库DatabaseMetadataMeta=newDatabaseMeta("enfo_bi","Oracle","Native","ip","sid","port","username","password");//资源库元对象,名称参数,id参数,描述等可以随便定义KettleDatabaseRepositoryMetakettleDatabaseMeta=newKettleDatabaseRepositoryMeta("enfo_bi","enfo_bi","kingdescription",dataMeta);//给资源库赋值repository.init(kettleDatabaseMeta);//连接资源库repository.connect("admin","admin");//根据变量查找到模型所在的目录对象,此步骤很重要。RepositoryDirectoryInterfacedirectory=repository.findDirectory("/enfo_worker/wxj");//创建ktr元对象TransMetatransformationMeta=((Repository)repository).loadTransformation(transName,directory,null,true,null);//创建ktrTranstrans=newTrans(transformationMeta);//执行ktrtrans.execute(null);//等待执行完毕trans.waitUntilFinished();if(trans.getErrors()>0){System.err.println("TransformationrunFailure!");}else{System.out.println("Transformationrunsuccessfully!");}}catch(KettleExceptione){e.printStackTrace();}}}
关于php调用kettle的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php调用kettle php调用python程序的详细内容...