




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.csv文件采集介紹CSV全稱(chēng)
Comma
Separated
values,是一種用來(lái)存儲(chǔ)數(shù)據(jù)的純文本文件格式。CSV文件的規(guī)則如下:1、
開(kāi)頭是不留空,以行為單位。
2、可含或不含列名,含列名則居文件第一行。
3、一行數(shù)據(jù)不垮行,無(wú)空行。
4、以半角逗號(hào)作分隔符,列為空也要表達(dá)其存在。
5、列內(nèi)容如存在半角逗號(hào),則用雙引號(hào)包起來(lái)。
7、文件讀寫(xiě)時(shí)引號(hào),逗號(hào)操作規(guī)則互逆。
8、內(nèi)碼格式不限,可為ASCII、Unicode或者其他。、注:標(biāo)準(zhǔn)的csv文件是用逗號(hào)分隔,但也有其他分隔符進(jìn)行分隔的。3.CSV文件解析開(kāi)發(fā)說(shuō)明3.1CSV采集解析在GCP平臺(tái)中的關(guān)系3.2適配器包目錄與配置介紹3.2.1適配器目錄說(shuō)明3.2.2適配器配置文件說(shuō)明(adapter_cfg.xml)3.3開(kāi)發(fā)說(shuō)明1、原始數(shù)據(jù)2、解析流程3、主要代碼privatebooleanparseCsv(Filefile){super.log2out("****Begintoparsefile:"+file.getName()); //列名 String[]colNames=null; //封裝成最后傳給平臺(tái)的map對(duì)象 Map<String,String>colNameAndValues=newHashMap<String,String>(); //取得廠家的絕對(duì)路徑,用于入庫(kù)的時(shí)候刪除記錄 Stringalarm_source=super.getCollectionAttr("datasource"); alarm_source=alarm_source.substring(0,alarm_source.lastIndexOf("/")); longtime_stamp=System.currentTimeMillis()/1000; FileInputStreamfis=null; InputStreamReaderisr=null; BufferedReaderbr=null; Stringline=null; //列名標(biāo)識(shí) booleanisTitle=true; try{ fis=newFileInputStream(file); isr=newInputStreamReader(fis,encoding); br=newBufferedReader(isr); intcount=1; while((line=br.readLine())!=null){ //讀取列名 if(!"".equals(line)&&isTitle&&line.contains(",")){ colNames=line.split(",",-1); isTitle=false; continue; } //讀取列值 if(!isTitle){ count++; PatternpCells=Ppile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,|[^,]+"); MatchermCells=pCells.matcher(line); List<String>colValues=newArrayList<String>();//每行記錄一個(gè)list //讀取每個(gè)單元格 while(mCells.find()){ Stringstr=mCells.group(); str=str.replaceAll("(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,","$1"); str=str.replaceAll("(?sm)(\"(\"))","$2"); colValues.add(str); } if(colValues.size()!=colNames.length){ super.log2out("第"+count+"行,列名和列值不能對(duì)應(yīng)上"); super.log2out("colNames\n"+Arrays.asList(colNames)); super.log2out("colValues\n"+Arrays.asList(colValues)); super.log2out("colNames長(zhǎng)度:"+colNames.length); super.log2out("colValues長(zhǎng)度:"+colValues.size()); continue; } intindex=0; for(StringcolName:colNames){ //列名處理 colName=AdapterUtil.ColumnNameFormat(colName); //防止下標(biāo)越界 if(index<colValues.size()){ Stringvalue=colValues.get(index); index++; //列值處理 value=AdapterUtil.valueFormat(value); if(colName.equalsIgnoreCase("ALARM_TEXT")){ //用255個(gè)字符,分隔成16個(gè)指標(biāo) colNameAndValues=this.SplitStringByByte(value,255,16,colNameAndValues); }elseif("PROBABLE_CAUSE_TXT".equalsIgnoreCase(colName)){ if(value.getBytes("UTF-8").length>255){ value=subStrByByteLen(value,"UTF-8",255,true); colNameAndValues.put(colName,value); } }elseif("LOCATE_INFO".equalsIgnoreCase(colName)||"PROBABLE_CAUSE_TXT".equalsIgnoreCase(colName)){ //長(zhǎng)度超過(guò)255,取前255個(gè)字符,其他截?cái)? value=this.subStrByByteLen(value,"UTF-8",255,true); colNameAndValues.put(colName,value); }else{ colNameAndValues.put(colName,value); } }else{ //如果列名比列值多,則填空值 colNameAndValues.put(colName,""); } } }else{ continue; } //FP0,FP1,FP2,FP3的MD5算法 this.getMD5FP(colNameAndValues); //添加alarm_source colNameAndValues.put("alarm_source",alarm_source); colNameAndValues.put("TIME_STAMP",time_stamp+""); //把封裝好的一行數(shù)據(jù)傳給平臺(tái) super.appendLine("or_tfa_alarm_clr",colNameAndValues); colNameAndValues.clear(); } super.log2out("文件數(shù)據(jù)總條數(shù):"+count); }catch(Exceptione){// e.printStackTrace(); super.log2out("ERROR:"+AdapterUtil.getStackTrace(e)); this.myPrintLog(AdapterUtil.getStackTrace(e)); returnfalse; }finally{ try{ if(fis!=null){ fis.close(); } if(isr!=null){ isr.close(); } if(br!=null){ br.close(); } }catch(IOExceptione){ e.pri
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專(zhuān)題22 能源與可持續(xù)發(fā)展-2025年中考《物理》一輪復(fù)習(xí)知識(shí)清單與解題方法
- 二零二五年度藥品研發(fā)成果許可與銷(xiāo)售分成合同范本
- 2025年度勞動(dòng)合同法企業(yè)勞動(dòng)爭(zhēng)議調(diào)解中心設(shè)立合同
- 河道整治砂石運(yùn)輸合同模板
- 2025年度生物科技行業(yè)勞動(dòng)合同解除協(xié)議范本
- 2025年度供應(yīng)鏈金融應(yīng)收賬款回款合作協(xié)議
- 家具銷(xiāo)售居間合同文件資料
- 2025年度品牌連鎖店鋪授權(quán)經(jīng)營(yíng)合同
- 2025年度山林資源承包與生態(tài)補(bǔ)償金支付合同書(shū)
- 二零二五年度企業(yè)員工績(jī)效對(duì)賭合作框架協(xié)議
- 《選材專(zhuān)項(xiàng)訓(xùn)練》課件
- 附著式升降腳手架安裝平臺(tái)和架體檢查驗(yàn)收表
- 小兒麻疹的護(hù)理查房
- DL-T 2574-2022 混流式水輪機(jī)維護(hù)檢修規(guī)程
- 《鋼鐵是怎樣煉成的》讀書(shū)分享課件
- GB/T 19830-2023石油天然氣工業(yè)油氣井套管或油管用鋼管
- 思想旗領(lǐng)航向心得體會(huì)
- 律師事務(wù)所章程
- 醫(yī)院合法性審查制度
- (新插圖)人教版四年級(jí)下冊(cè)數(shù)學(xué) 第2招 巧算24點(diǎn) 期末復(fù)習(xí)課件
- 駕駛員違規(guī)違章安全教育談話記錄表
評(píng)論
0/150
提交評(píng)論