小編給大家分享一下kettle使用文件導(dǎo)入到Postgresql出現(xiàn)亂碼的解決方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)是專業(yè)的天涯網(wǎng)站建設(shè)公司,天涯接單;提供做網(wǎng)站、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行天涯網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
kettle使用文件導(dǎo)入到Postgresql出現(xiàn)如下幾種問題的總結(jié):
第一種錯(cuò)誤,報(bào)錯(cuò)如ERROR: extra data after last expected column所示?;蛘邎?bào)錯(cuò)為報(bào)錯(cuò)為0x05,多一列,extra data after last expected column。
sql查詢語(yǔ)句定位到某個(gè)字段:
SELECT * ),'%')
解決方法,使用空替代,原因是出現(xiàn)特殊字符,),這種字符,導(dǎo)致的錯(cuò)誤。
解決方法如下所示:
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException { Object[] r = getRow(); if (r == null) { setOutputDone(); return false; } // It is always safest to call createOutputRow() to ensure that your output row’s Object[] is large // enough to handle any new fields you are creating in this step. r = createOutputRow(r, data.outputRowMeta.size()); String 字段名稱 = get(Fields.In, "字段名稱").getString(r); if(字段名稱 != null) { 字段名稱 = 字段名稱.replaceAll(( + "", ""); } get(Fields.Out, "字段名稱").setValue(r, 字段名稱); // Send the row on to the next step. putRow(data.outputRowMeta, r); return true; }
第二種錯(cuò)誤,報(bào)錯(cuò)如missing data for column "datastamp"。
sql查詢語(yǔ)句定位到某個(gè)字段:
SELECT * ),'%')
或者
SELECT * ),'%')
解決方法:是字段的值出現(xiàn)了,換行回車,),)。)多一行,少n列,missing data column xxx。解決方法:使用字符替代,然后再替換回來(lái)。
解決方法如下所示:
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException { Object[] r = getRow(); if (r == null) { setOutputDone(); return false; } // It is always safest to call createOutputRow() to ensure that your output row’s Object[] is large // enough to handle any new fields you are creating in this step. 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, 字段名稱); // Send the row on to the next step. putRow(data.outputRowMeta, r); return true; }
第三種錯(cuò)誤,報(bào)錯(cuò)如,0x00的解決方法:
sql查詢語(yǔ)句定位到某個(gè)字段:
SELECT * ),'%')
解決方法:
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException { Object[] r = getRow(); if (r == null) { setOutputDone(); return false; } // It is always safest to call createOutputRow() to ensure that your output row’s Object[] is large // enough to handle any new fields you are creating in this step. r = createOutputRow(r, data.outputRowMeta.size()); // Get the value from an input field String 字段名稱 = get(Fields.In, "字段名稱").getString(r); if(字段名稱 != null) { 字段名稱= 字段名稱.replaceAll("\\u0000", ""); } get(Fields.Out, "字段名稱").setValue(r, 字段名稱); // Send the row on to the next step. putRow(data.outputRowMeta, r); return true; }
看完了這篇文章,相信你對(duì)kettle使用文件導(dǎo)入到Postgresql出現(xiàn)亂碼的解決方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!