‘壹’ 边界服务器上用spoon链接oracle数据库,报The Network Adapter could not establish the connection错误
请按如过程检查:
1 服务器,可否正常登录数据库并查询数据sqlplus
2 服务器上 用sqlplus user/pwd@orcl 的方式能否登录?
3 服务器的防火墙是否开着,是否没有为oracle调整过
4 客户端用oracle sql developer 连接时,地址,端口,数据库实例名,用户名,密码,是否都正确?
5 对于使用oci连接(pl/sql developer、toad等)的客户端,本地网络服务名 (tnsnames.ora中的配置内容)配置的内容是否正确
‘贰’ 使用kettle工具时,将excel表格中的数据导入到oracle数据库时,输出项出错。
使用kettle工具时,将excel表格中的数据导入到oracle数据库时,输出项出错。
数据大小超出此类型的最大值:3759 十进制数值的缩放导致数据截断
‘叁’ 抽取数据中有逗号+说+kettle会报错+怎么处理
摘要 亲你好,执行后,报错ORA-00904,“XX”标识符无效,其中的XX不是表输出中标的字段,即源数据库比目标数据库新增加了字段,故插入失败报错。
‘肆’ 错误连接数据库 [kettletest1] : Error connecting to database: (using class org.gjt.mm.mysql.Driver)
A Database Error Occurred 一个数据库错误发生Unable to connect to your database server using the provided settings.不能用提供的设置连接到你的数据库服务器Filename: core/Loader.php文件名 core/Loader.phpLine Number: 260线路: 260
‘伍’ kettle spoon连接数据库异常
连接字符串可能不对。
1 检查数据库的监听是否正常
2 如果监听正常查看本地配置的tnsname是否正确
‘陆’ linux环境kettle连接不了数据库资源库
首先感谢楼上两位大神的回答,再说一下问题的错误原因:
1、是因为这部署kettle的这台服务器上没有MySQL的客户端,所以根本无法访问到数据库,太疏忽了。。。
2、接下来换了一台装有MySQL客户端的服务器,进行部署。也是有问题,是由于我创建的资源库用户没有权限访问那台数据库(只开通了外网连接权限,未开通localhost权限)
---赋予权限(外网)
grant all on lisnew.* to ods_rep@"%" identified by 'ods_rep';
---赋予权限(内网/本地)
grant all privileges on . to ods_rep@localhost identified by 'ods_rep';
【注】:ods_rep用户为资源库用户,命令含义可在网络查询
‘柒’ 使用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表输入完成但是插入更新一直没反应
如果不修改,默认的格式是“常规”,会导致原本以文本格式储存的数字、或者日期格式的内容等出现错乱。比如原来如果是0001的内容,会自动被辨识为1,原来的日期可能会变成五位数字。最好还是根据各个列的值设定一下属性。
‘玖’ 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();//创建资源库对象,此时的对象还是一个空对象=newKettleDatabaseRepository();//创建资源库数据库对象,类似我们在spoon里面创建资源库DatabaseMetadataMeta=newDatabaseMeta("enfo_bi","Oracle","Native","ip","sid","port","username","password");//资源库元对象,名称参数,id参数,描述等可以随便定义=("enfo_bi","enfo_bi","kingdescription",dataMeta);//给资源库赋值repository.init(kettleDatabaseMeta);//连接资源库repository.connect("admin","admin");//根据变量查找到模型所在的目录对象=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*/{privatestaticStringtransName="test1";publicstaticvoidmain(String[]args){try{//初始化kettle环境KettleEnvironment.init();//创建资源库对象,此时的对象还是一个空对象=newKettleDatabaseRepository();//创建资源库数据库对象,类似我们在spoon里面创建资源库DatabaseMetadataMeta=newDatabaseMeta("enfo_bi","Oracle","Native","ip","sid","port","username","password");//资源库元对象,名称参数,id参数,描述等可以随便定义=("enfo_bi","enfo_bi","kingdescription",dataMeta);//给资源库赋值repository.init(kettleDatabaseMeta);//连接资源库repository.connect("admin","admin");//根据变量查找到模型所在的目录对象,此步骤很重要。=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();}}}
‘拾’ 使用kettle向mysql插入数据~ 每秒10条...应该是mysql的问题。有谁知道怎么能提高效率么~
如果你用的是INNODB数据库,有一个最简单有效的调整,就是将INI文件里面的下面参数调整:
原始:
innodb_flush_log_at_trx_commit=1
调整为:
innodb_flush_log_at_trx_commit=2
具体什么意思就不解释了,试了效果好再去找度娘