欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種Excel數(shù)據(jù)動(dòng)態(tài)導(dǎo)入數(shù)據(jù)庫(kù)的方法

文檔序號(hào):6558297閱讀:1269來(lái)源:國(guó)知局

專利名稱::一種Excel數(shù)據(jù)動(dòng)態(tài)導(dǎo)入數(shù)據(jù)庫(kù)的方法
技術(shù)領(lǐng)域
:本發(fā)明涉及ー種Excel數(shù)據(jù)動(dòng)態(tài)導(dǎo)入數(shù)據(jù)庫(kù)的方法。這種方法是ー種從Excel到數(shù)據(jù)庫(kù)的數(shù)據(jù)動(dòng)態(tài)導(dǎo)入設(shè)計(jì)與實(shí)現(xiàn)。。
背景技術(shù)
:一般信息系統(tǒng)在將Excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)系統(tǒng)時(shí),對(duì)Excel數(shù)據(jù)有比較嚴(yán)格的要求,如字段數(shù)量一致、名稱一致、類型一致等。然而,人們也經(jīng)常會(huì)遇到Excel數(shù)據(jù)與目標(biāo)數(shù)據(jù)庫(kù)表之間存在不一致的情況,這種不一致主要體現(xiàn)在三個(gè)方面字段數(shù)量不一致、字段名稱不一致和字段類型不一致。為了解決Excel數(shù)據(jù)與數(shù)據(jù)庫(kù)表之間存在不一致時(shí)的導(dǎo)入問(wèn)題,因此發(fā)明了ー種Excel數(shù)據(jù)動(dòng)態(tài)導(dǎo)入數(shù)據(jù)庫(kù)的方法。
發(fā)明內(nèi)容針對(duì)以上的不足,本發(fā)明的目的是提出ー種Excel數(shù)據(jù)動(dòng)態(tài)導(dǎo)入數(shù)據(jù)庫(kù)的方法,根據(jù)造成Excel數(shù)據(jù)與目標(biāo)數(shù)據(jù)表不一致的兩個(gè)主要因素,我們提出了Excel到數(shù)據(jù)庫(kù)的通用導(dǎo)入設(shè)計(jì)。字段動(dòng)態(tài)映射和映射合法性是本通用導(dǎo)入設(shè)計(jì)的兩大關(guān)鍵步驟。字段動(dòng)態(tài)映射是指操作用戶針對(duì)目標(biāo)數(shù)據(jù)庫(kù)表中的每ー個(gè)字段從Excel數(shù)據(jù)清單中指定相應(yīng)的導(dǎo)入字段;字段映射合法性主要包括字段類型轉(zhuǎn)換驗(yàn)證和數(shù)據(jù)合法性驗(yàn)證,由于Excel中的數(shù)據(jù)類型與各種數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)類型存在一些差異,需要對(duì)字段映射關(guān)系中源字段至目標(biāo)字段的類型轉(zhuǎn)換的有效性進(jìn)行驗(yàn)證,另外,由于目標(biāo)數(shù)據(jù)庫(kù)表中往往對(duì)數(shù)據(jù)本身有一些約束(如數(shù)據(jù)長(zhǎng)度等),因此,需要根據(jù)字段映射關(guān)系對(duì)源數(shù)據(jù)表中數(shù)據(jù)進(jìn)行合性檢查。Excel數(shù)據(jù)清單信息可表不為RTable={RFi|i=I,2,3…RTable.FieldCount},RFi表示Excel數(shù)據(jù)清單中的第i段,描述為RFi=<RFNamei,RFTypei,RFMaxLengthi)目標(biāo)數(shù)據(jù)庫(kù)表信息可表示為T(mén)Table={TFjIj=I,2,3…TTable.FieldCount},TFj表示目標(biāo)數(shù)據(jù)庫(kù)表中的第j段,描述為T(mén)Fj=〈TFNamej,TFTypej,TFMaxLengthj>。字段動(dòng)態(tài)映射就是要建立RTable’TTable的對(duì)應(yīng)關(guān)系,即建立表示為FIELDMAP={〈RFi,TFj>|RFiRTable,TFjTTable}的序偶集,即對(duì)于TFjTTable,RFjRTable,使得〈RFi,TFj>FIELDMAP。這種對(duì)應(yīng)關(guān)系可以是——對(duì)應(yīng),也可以是ー多對(duì)應(yīng),即Excel數(shù)據(jù)清單的某一字段可對(duì)應(yīng)到目標(biāo)數(shù)據(jù)庫(kù)表的多個(gè)字段。字段映射建立后,需要進(jìn)行字段映射合法性驗(yàn)證,其算法描述如下isVald=TrueForeach<RFi,TFj>inFIELDMAPIfnot(TypeMatch(RFTypei,TFTypej)andLenMatch(RFMaxLengthi,TFMaxLengthj))thenIsVald=FalseEndifNext函數(shù)TypeMatch用于驗(yàn)證RFTypei與TFTypej類型是否兼容,函數(shù)LenMatch用于驗(yàn)證RFMaxLengthi與TFMaxLengthj數(shù)據(jù)長(zhǎng)度是否兼容。完成字段映射及合法性驗(yàn)證后,即可進(jìn)行數(shù)據(jù)導(dǎo)入操作。Excel數(shù)據(jù)清單的數(shù)據(jù)表不為RTableData={RRowk|k=1,2,…RTableData.Count},RRowk顯然是關(guān)系RTable的元組。目標(biāo)數(shù)據(jù)表的數(shù)據(jù)可表示為T(mén)TableData={Trowx|x=1,2,3,4…TTableData.Count},TRowx顯然是關(guān)系TTable的元組。數(shù)據(jù)導(dǎo)入的算法描述如下ForeachRRowkInRtableDataTRow=newTTableForeachTFiinTRowTRow(TFi)=RRowk(RFj)其中くRFj,TFi>FIELDMAPNextTTableData,Add(TRow)Next具體實(shí)施例方式微軟的SQLSERVER是當(dāng)前主流的DBMS,下面介紹將Excel數(shù)據(jù)動(dòng)態(tài)導(dǎo)入SQLSERVER數(shù)據(jù)庫(kù)的具體實(shí)現(xiàn),編程語(yǔ)言采用Delphi7.O。CreateDataSetField過(guò)程用于創(chuàng)建ADODataSet對(duì)象DataSetField來(lái)保存從Excel數(shù)據(jù)清單中提取的結(jié)構(gòu)信息,關(guān)鍵代碼如下procedureTImportKDBMForm.CreateDataSetField;beginifDataSetField.ActivethenDataSetField.Close;DataSetField.Fields.Clear;DataSetField.FieldDefs.Clear;DataSetField.FieldDefs.Add(’fieldNo’,ftlnteger);DataSetField.FieldDefs.Add(’fieldName’,ftString,20);DataSetField.FieldDefs.Add(’fieldType’,ftString,20);DataSetField.FieldDefs.Add(’fieldWidth’,ftlnteger);DataSetField.CreateDataSet();end;然后,調(diào)用過(guò)程GetExcelTablelnfo獲取Excel數(shù)據(jù)清單中各字段信息。CreateDataSetFieldMap過(guò)程用于創(chuàng)建ADODataSet對(duì)象DataSetFieldMap來(lái)字段映射關(guān)系,關(guān)鍵代碼如下procedureTImportKDBMForm.CreateDataSetFieldMap;beginifDataSetFieldMap.ActivethenDataSetFieldMap.Close;DataSetFieldMap.Fields.Clear;DataSetFieldMap.FieldDefs.Clear;DataSetFieldMap.FieldDefs.AddCTFieldName’,ftString,20);DataSetFieldMap.FieldDefs.Add(,TFieldType’,ftString,20);DataSetFieldMap.FieldDefs.Add(’TFieldWidth',ftlnteger);DataSetFieldMap.FieldDefs.Add(’RFieldName*,ftString,20);DataSetFieldMap.FieldDefs.Add(’RFieldType',ftString,20);DataSetFieldMap.FieldDefs.Add(,RFieldwidth’,ftlnteger);DataSetFieldMap.CreateDataSet();End;然后,調(diào)用過(guò)程GetSQLTableInfoO獲取SQL數(shù)據(jù)庫(kù)表中各字段信息。操作用戶指定好Excel各字段與SQL數(shù)據(jù)庫(kù)表中各字段的映射關(guān)系后,即可以進(jìn)行數(shù)據(jù)導(dǎo)入操作,關(guān)鍵代碼如下IfnotCheckFieldMapOthenexit;//如果字段映射沒(méi)有通過(guò)驗(yàn)證,則退出whilenotADOQueryl.EofdobeginDataSetFormatData.Append();DataSetFieldMap.First;while(notDataSetFieldMap.Eof)dobeginFieldNo:=DataSetFieldMap.fieldbyname(’RFieldNo’)AsInteger;FieldName:=DataSetFieldMap.fieldbyname(’TFieldName’).Asstring;FieldValue:-ADOQueryl.Fields[FieldNo].AsString;DataSetFormatData.FieldByName(FieldName).Value:-FieldValueDataSetFieldMap.Next;//處理下一個(gè)字段映射end;DataSetFormatData.Post();ADOQueryl.Next;//處理下一條Excel數(shù)據(jù)記錄end;權(quán)利要求1.ー種Excel數(shù)據(jù)動(dòng)態(tài)導(dǎo)入數(shù)據(jù)庫(kù)的方法Excel數(shù)據(jù)清單信息可表示為RTable={RFiIi=I,2,3…RTable.FieldCount},RFi表示Excel數(shù)據(jù)清單中的第i段,描述為RFi=<RFNamei,RFTypei,RFMaxLengthi>。目標(biāo)數(shù)據(jù)庫(kù)表信息可表示為T(mén)Table={TFj|j=1,2,3…TTable.FieldCount},TFj表示目標(biāo)數(shù)據(jù)庫(kù)表中的第j段,描述為T(mén)Fj=〈TFNamej,TFTypej,TFMaxLengthj>。2.根據(jù)權(quán)利要求I所述,Excel數(shù)據(jù)動(dòng)態(tài)導(dǎo)入數(shù)據(jù)庫(kù)的方法,其特征是字段動(dòng)態(tài)映射就是要建立RTable’TTable的對(duì)應(yīng)關(guān)系,即建立表示為FIELDMAP={〈RFi,TFj>|RFiRTable,TFj!Table}的序偶集,即對(duì)于TFj!Table,RFjRTable,使得〈RFi,TFj>FIELDMAP。這種對(duì)應(yīng)關(guān)系可以是一一對(duì)應(yīng),也可以是ー多對(duì)應(yīng),即Excel數(shù)據(jù)清單的某一字段可對(duì)應(yīng)到目標(biāo)數(shù)據(jù)庫(kù)表的多個(gè)字段。全文摘要Excel數(shù)據(jù)動(dòng)態(tài)導(dǎo)入數(shù)據(jù)庫(kù)的方法采用建立字段映射的方法,實(shí)現(xiàn)了Excel到數(shù)據(jù)庫(kù)的動(dòng)態(tài)導(dǎo)入,解決了一般導(dǎo)入方案中對(duì)Excel數(shù)據(jù)約束過(guò)嚴(yán)的問(wèn)題,最后給出了該設(shè)計(jì)方案基于Delphi語(yǔ)言的具體實(shí)現(xiàn)。該方法應(yīng)用于多個(gè)信息管理系統(tǒng),取得了良好的實(shí)際使用效果,可供信息管理系統(tǒng)設(shè)計(jì)開(kāi)發(fā)人員借鑒。文檔編號(hào)G06F9/44GK102841784SQ20111017235公開(kāi)日2012年12月26日申請(qǐng)日期2011年6月24日優(yōu)先權(quán)日2011年6月24日發(fā)明者楊際榮申請(qǐng)人:鎮(zhèn)江華揚(yáng)信息科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
抚松县| 繁昌县| 天长市| 沂水县| 西林县| 泾源县| 团风县| 讷河市| 陆河县| 大关县| 类乌齐县| 富锦市| 铜陵市| 光山县| 蒙山县| 宁南县| 苗栗县| 麻阳| 云南省| 绍兴市| 肥西县| 正安县| 鸡西市| 盐边县| 阳泉市| 古田县| 乐昌市| 义乌市| 政和县| 十堰市| 毕节市| 秭归县| 方城县| 婺源县| 仪征市| 昆山市| 陇南市| 桐乡市| 新田县| 平凉市| 红桥区|