kettle使用文件导入到Postgresql出现乱码的解决方法
小编给大家分享一下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出现乱码的解决方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。