小编给大家分享一下kettle使用文件导入到Postgresql出现乱码的解决方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

kettle使用文件导入到Postgresql出现如下几种问题的总结:

第一种错误,报错如ERROR: extra data after last expected column所示。或者报错为报错为0x05,多一列,extra data after last expected column。

sql查询语句定位到某个字段:

SELECT * ),'%')

解决方法,使用空替代,原因是出现特殊字符,),这种字符,导致的错误。

解决方法如下所示:

publicbooleanprocessRow(StepMetaInterfacesmi,StepDataInterfacesdi)throwsKettleException{Object[]r=getRow();if(r==null){setOutputDone();returnfalse;}//ItisalwayssafesttocallcreateOutputRow()toensurethatyouroutputrow’sObject[]islarge//enoughtohandleanynewfieldsyouarecreatinginthisstep.r=createOutputRow(r,data.outputRowMeta.size());String字段名称=get(Fields.In,"字段名称").getString(r);if(字段名称!=null){字段名称=字段名称.replaceAll((+"","");}get(Fields.Out,"字段名称").setValue(r,字段名称);//Sendtherowontothenextstep.putRow(data.outputRowMeta,r);returntrue;}

第二种错误,报错如missing data for column "datastamp"。

sql查询语句定位到某个字段:

SELECT * ),'%')

或者

SELECT * ),'%')

解决方法:是字段的值出现了,换行回车,),)。)多一行,少n列,missing data column xxx。解决方法:使用字符替代,然后再替换回来。

解决方法如下所示:

publicbooleanprocessRow(StepMetaInterfacesmi,StepDataInterfacesdi)throwsKettleException{Object[]r=getRow();if(r==null){setOutputDone();returnfalse;}//ItisalwayssafesttocallcreateOutputRow()toensurethatyouroutputrow’sObject[]islarge//enoughtohandleanynewfieldsyouarecreatinginthisstep.r=createOutputRow(r,data.outputRowMeta.size());String字段名称=get(Fields.In,"字段名称").getString(r);if(字段名称!=null){字段名称=字段名称.replaceAll("\\r","@#r;");字段名称=字段名称.replaceAll("\\n","@#n;");}get(Fields.Out,"字段名称").setValue(r,字段名称);//Sendtherowontothenextstep.putRow(data.outputRowMeta,r);returntrue;}

第三种错误,报错如,0x00的解决方法:

sql查询语句定位到某个字段:

SELECT * ),'%')

解决方法:

publicbooleanprocessRow(StepMetaInterfacesmi,StepDataInterfacesdi)throwsKettleException{Object[]r=getRow();if(r==null){setOutputDone();returnfalse;}//ItisalwayssafesttocallcreateOutputRow()toensurethatyouroutputrow’sObject[]islarge//enoughtohandleanynewfieldsyouarecreatinginthisstep.r=createOutputRow(r,data.outputRowMeta.size());//GetthevaluefromaninputfieldString字段名称=get(Fields.In,"字段名称").getString(r);if(字段名称!=null){字段名称=字段名称.replaceAll("\\u0000","");}get(Fields.Out,"字段名称").setValue(r,字段名称);//Sendtherowontothenextstep.putRow(data.outputRowMeta,r);returntrue;}

看完了这篇文章,相信你对kettle使用文件导入到Postgresql出现乱码的解决方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!