版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、.wd我司案號委托日期專利類型技 術(shù) 交 底 書創(chuàng)造或?qū)嵱眯滦蛯@暾垖S眉夹g(shù)交底書名稱:數(shù)據(jù)脫敏到文件和文件導(dǎo)入數(shù)據(jù)庫的實現(xiàn)創(chuàng)造人名單:技術(shù)交底書撰寫人:吳陽撰寫人聯(lián)系方式:E-mail:wuyang固定 :手機造人所屬工程組:研發(fā)中心-數(shù)據(jù)管控產(chǎn)品線本申請涉及的方案是否已在產(chǎn)品上應(yīng)用可選:否是 (產(chǎn)品名稱) 本申請涉及的方案是否即將在產(chǎn)品上應(yīng)用:否是 (產(chǎn)品名稱) (預(yù)計的應(yīng)用時間) 交底書撰寫本卷須知:1、專利法予以保護的是技術(shù)方案不是功能,因此需要給出實現(xiàn)某種功能的具體技術(shù)方案,不能僅僅闡述功能;2、為了獲得一個較大的保護范圍,在能夠?qū)崿F(xiàn)最 基本的創(chuàng)造目的的前
2、提條件下,創(chuàng)造人應(yīng)該在當(dāng)前實施的最優(yōu)技術(shù)方案根基上發(fā)散思維,給出盡可能多的替代方案;3、同一個技術(shù)術(shù)語在整個交底書里只用一個詞來表達,不要用多個詞來表達。4、代理人和知識產(chǎn)權(quán)專員不是技術(shù)專家,當(dāng)他們咨詢時,創(chuàng)造人需要耐心講解;如果代理人或知識產(chǎn)權(quán)專員要求補充必要的資料,創(chuàng)造人應(yīng)當(dāng)及時補充。一、縮略語和關(guān)鍵術(shù)語定義下文出現(xiàn)的英文縮寫術(shù)語在此提供對應(yīng)的英文全稱和中文譯文,或中文專業(yè)術(shù)語的詳細(xì)解釋敏感數(shù)據(jù),指不為群眾知悉,具有實際和潛在利用價值,喪失、不當(dāng)使用或未經(jīng)授權(quán)訪問對社會、企業(yè)或個人造成危害的信息,如個人隱私信息、業(yè)務(wù)經(jīng)營信息、財務(wù)信息、人事信息、IT運維信息等。數(shù)據(jù)脫敏,指對某些敏感信息通
3、過脫敏規(guī)那么進展數(shù)據(jù)的變形,實現(xiàn)敏感數(shù)據(jù)的可靠保護。脫敏數(shù)據(jù),指敏感數(shù)據(jù)經(jīng)過數(shù)據(jù)脫敏處理后,不再包含某些敏感信息的數(shù)據(jù)。數(shù)據(jù)遷移,指將數(shù)據(jù)從一個載體遷移到另一個載體,比方:從數(shù)據(jù)庫A遷移到數(shù)據(jù)庫B,從文件A遷移到數(shù)據(jù)庫A,從數(shù)據(jù)庫A遷移到文件A等。XML,即可擴展標(biāo)記語言(Extensible Markup Language)。標(biāo)記是指計算機所能理解的信息符號,通過此種標(biāo)記,計算機之間可以處理包含各種信息的文章等。如何定義這些標(biāo)記,既可以選擇國際通用的標(biāo)記語言,比方HTML,也可以使用像XML這樣由相關(guān)人士自由決定的標(biāo)記語言,這就是語言的可擴展性。XML是從SGML中簡化修改出來的。文件的導(dǎo)出
4、,即將源數(shù)據(jù)庫中脫敏后的數(shù)據(jù)導(dǎo)入到指定格式的文件中。文件的導(dǎo)入,即將excel文件經(jīng)過脫敏操作過后導(dǎo)入到目標(biāo)數(shù)據(jù)庫中。二、背景技術(shù)以及與本申請相關(guān)的現(xiàn)有技術(shù)1、背景技術(shù)即幫助理解本專利技術(shù)內(nèi)容的公知常識,您基于什么樣的背景創(chuàng)造的該專利:隨著信息技術(shù)的開展與大數(shù)據(jù)時代的到來,數(shù)據(jù)流通成為釋放數(shù)據(jù)紅利與價值的主要手段和途徑,敏感數(shù)據(jù)在流通中缺乏有效管控,處于高風(fēng)險狀態(tài)。近年來,敏感數(shù)據(jù)泄漏事件屢見不鮮。敏感數(shù)據(jù)泄漏帶來的不僅僅是經(jīng)濟損失,同時損害了金融機構(gòu)和政府部門等權(quán)威機構(gòu)的公信力,嚴(yán)重破壞了社會信用體系,影響了相關(guān)產(chǎn)業(yè)與全社會安康和諧開展。在這樣的時代背景下,防止敏感數(shù)據(jù)的泄漏成為了十分重要的
5、問題,因此我們開發(fā)了數(shù)據(jù)脫敏網(wǎng)關(guān)。數(shù)據(jù)脫敏網(wǎng)關(guān)就是針對敏感數(shù)據(jù)進展數(shù)據(jù)脫敏,保證數(shù)據(jù)在做數(shù)據(jù)遷移的和使用時的安全性和保密性。數(shù)據(jù)脫敏網(wǎng)關(guān)主要實現(xiàn)了敏感數(shù)據(jù)在數(shù)據(jù)庫之間的脫敏和遷移,針對客戶的需求,又參加了數(shù)據(jù)庫到文件支持的文件格式有csv,excel,json,xml,txt的脫敏,和文件暫時只支持07版以前的excel,或者excel壓縮打包后的zip包到數(shù)據(jù)庫的脫敏。2、與本專利最接近的現(xiàn)有技術(shù)現(xiàn)有技術(shù)就是已經(jīng)有的技術(shù),如果該現(xiàn)有技術(shù)的缺點正是本創(chuàng)造能夠消除的,那么為相關(guān)現(xiàn)有技術(shù),否那么為非相關(guān)現(xiàn)有技術(shù);相關(guān)現(xiàn)有技術(shù)中,與本專利共同的技術(shù)特征最多的,可視為最接近現(xiàn)有技術(shù)最接近現(xiàn)有技術(shù)是數(shù)據(jù)
6、脫敏網(wǎng)關(guān)中的數(shù)據(jù)遷移管理模塊,實現(xiàn)了數(shù)據(jù)庫之間的脫敏遷移。2.1現(xiàn)有技術(shù)的實現(xiàn)方案給出現(xiàn)有技術(shù)的系統(tǒng)圖、流程圖,結(jié)合附圖說明現(xiàn)有技術(shù)的實現(xiàn)過程數(shù)據(jù)遷移管理模塊作為數(shù)據(jù)脫敏網(wǎng)關(guān)的核心功能,其下又分為三個子模塊: 策略管理,任務(wù)管理,任務(wù)日志管理,集成在數(shù)據(jù)脫敏網(wǎng)關(guān)中。如以以下圖:策略管理:實現(xiàn)了相關(guān)脫敏策略的增刪改查操作。任務(wù)管理:實現(xiàn)了相關(guān)脫敏任務(wù)的增刪改查操作,改子模塊是脫敏遷移管理的核心功能,整個的數(shù)據(jù)脫敏遷移都是在這里實現(xiàn),目前實現(xiàn)了數(shù)據(jù)庫到數(shù)據(jù)的脫敏遷移,數(shù)據(jù)到csv文件的脫敏遷移。任務(wù)日志管理:簡單的任務(wù)日志查看功能。數(shù)據(jù)庫脫敏遷移流程圖2.2現(xiàn)有技術(shù)的缺點一定是采用本專利申請技術(shù)方
7、案后能夠消除的缺點,缺點可以是多個現(xiàn)有數(shù)據(jù)遷移管理模塊中,只是針對了數(shù)據(jù)庫之間的脫敏遷移,在文件excel方面功能還不夠完善,只存在簡單的csv文件的導(dǎo)出功能,在遇到客戶需要其他文件格式的時候,比方excel,xml,json等文件格式的時候沒有良好的支持。三、本申請所解決的技術(shù)問題針對上述2.2點提出的缺點,引出創(chuàng)造動機,闡述本專利要解決的技術(shù)問題在數(shù)據(jù)脫敏中,脫敏后的數(shù)據(jù)存放在一個ListMap集合中,其中每一個Map都對應(yīng)數(shù)據(jù)庫里面的一個數(shù)據(jù),string為其列名,object為其值。難點在于怎樣將數(shù)據(jù)按照每個文件對應(yīng)的格式轉(zhuǎn)換寫入到文件當(dāng)中,而且在excel文件存在不同版本的區(qū)別,07
8、版以前的excel每一個sheet只支持65535行的數(shù)據(jù)量,而07版本以后支持100萬+行的數(shù)據(jù)量,map中的健對應(yīng)excel的表頭列名。xml的數(shù)據(jù)也有固定的格式要求,下文會貼出例子;而json數(shù)據(jù)在Java里面有現(xiàn)有的方法實現(xiàn),就不做詳細(xì)的闡述了。XML數(shù)據(jù)格式:value1value2.value1value2.備注:每一個node對應(yīng)數(shù)據(jù)中的每一行數(shù)據(jù),label對應(yīng)數(shù)據(jù)庫中的字段名,value對應(yīng)其值。四、本申請技術(shù)方案的詳細(xì)闡述創(chuàng)造內(nèi)容,重點介紹1、本申請的總體技術(shù)實現(xiàn)主要是代碼方面的實現(xiàn)。總的構(gòu)思流程圖:備注:因為這里是針對已經(jīng)脫敏的ListMap數(shù)據(jù)進展文件格式的輸出,這里就
9、不做脫敏的實現(xiàn),只做文件輸出的實現(xiàn)。后文中會用到一個公共的Document對象轉(zhuǎn)String的方法:publicstatic String doctoString(Document document) String str = ; try / 使用輸出流來進展轉(zhuǎn)化ByteArrayOutputStream out = newByteArrayOutputStream(); / 使用UTF-8編碼OutputFormat format = newOutputFormat( , true, UTF-8); XMLWriter writer = newXMLWriter(out, format);
10、writer.write(document); str = out.toString(UTF-8); catch (Exception ex) ex.printStackTrace(); returnstr; 1 ListMap轉(zhuǎn)xml文件格式的實現(xiàn)前文已經(jīng)寫出了xml文件格式的 基本,下文就不在做詳細(xì)的贅述了:引用的包:org.dom4j。根據(jù)xml文件的 基本格式看出,在做具體實現(xiàn)的時候,我是把list里面的數(shù)據(jù)放在nodes標(biāo)簽里面的,其子標(biāo)簽node那么對應(yīng)數(shù)據(jù)庫里面的每一行數(shù)據(jù),數(shù)據(jù)庫對應(yīng)的字段名那么是key標(biāo)簽里面的label屬性。這里的重點就是找出最簡單的方法將數(shù)據(jù)庫里面的字段名
11、寫入到label里面,在這里我們只需要遍歷list0中的數(shù)據(jù)就能得出數(shù)據(jù)庫中的字段名了,實現(xiàn)代碼如下:publicstatic String listtoXml(List list) throws Exception /初始化一個document對象,用來添加XML內(nèi)容Document document = DocumentHelper.createDocument();/初始化一個Element對象,其表示XML文檔中的元素,元素可包含屬性,其他元素或文本,如果元素含有文本,那么在文本節(jié)點中表示該文本,文本永遠(yuǎn)存儲在文本節(jié)點中。此時創(chuàng)立了一個父節(jié)點nodes,用于記錄list里面的所有數(shù)據(jù)。
12、Element nodesElement = document.addElement(nodes); inti = 0;/遍歷listfor (Object o : list) /初始化Element對象,創(chuàng)立nodes節(jié)點的子節(jié)點node,用于記錄每一行數(shù)據(jù)。Element nodeElement = nodesElement.addElement(node); if (o instanceof Map) /遍歷mapfor (Object obj : (Map) o).keySet() /初始化Element對象,創(chuàng)立node節(jié)點的子節(jié)點key,用于記錄每一格的具體數(shù)據(jù)。Element k
13、eyElement = nodeElement.addElement(key); /key節(jié)點的label屬性,即map的健,對應(yīng)數(shù)據(jù)庫的字段名。keyElement.addAttribute(label, String.valueOf(obj); /key節(jié)點的具體內(nèi)容,即map的值,對應(yīng)數(shù)據(jù)庫的值。keyElement.setText(String.valueOf(Map) o).get(obj); else Element keyElement = nodeElement.addElement(key); keyElement.addAttribute(label, String.val
14、ueOf(i); keyElement.setText(String.valueOf(o); i+; /將Document對象轉(zhuǎn)為字符串返回,在轉(zhuǎn)字符串的時候設(shè)定了具體的編碼,xml為UTF8的編碼。returndoctoString(document); 到此就將一個ListMap轉(zhuǎn)換為了xml文件的格式了,這個list就是數(shù)據(jù)脫敏網(wǎng)關(guān)中的脫敏數(shù)據(jù),余下的操作就是將上面返回的字符串輸出到文件中,文件的輸出就是一個簡單的I/O操作就不再做詳細(xì)的贅述了,值得注意的是在創(chuàng)立文件的時候是以xml為后綴的。2. ListMap轉(zhuǎn)excel文件格式的實現(xiàn)區(qū)別excel 07版以前和以后兩個版本:07版本
15、以前的每一個工作簿sheet數(shù)據(jù)量限制為256列*65536行,07版本以后的限制為16384列*1048576行,在這里可以看出07版本的excel文件存儲的數(shù)據(jù)量遠(yuǎn)遠(yuǎn)大于較早版本的,所以建議盡量使用07版本以后的.不過考慮到很多PC上面可能沒有較新的excel我會給出兩個版本的具體實現(xiàn)。而且兩個版本的excel在文件后綴名上也存在不同,07版本以前為.xls,07版本以后為.xlsx,在創(chuàng)立文件的時候需要值得注意。07版本以前引用的包:org.apache.poi.hssf.usermodel。/* *創(chuàng)立excel表頭 * param sheet * paramkeysStr */pri
16、vatestaticvoidbuildTitleOld(HSSFSheet sheet, String keysStr) if (sheet.getLastRowNum() = 0) HSSFCell cell = null;HSSFRow row = sheet.createRow(sheet.getLastRowNum();for (int j = 0; j keysStr.length; j+) cell = row.createCell(j);cell.setCellValue(keysStrj);/* excel 版本2007以下 sheet上限65535* param ListMa
17、p* return*/publicstaticHSSFWorkbooklisttoExcleOld(ListMap list)HSSFWorkbook workbook = newHSSFWorkbook();/獲取數(shù)據(jù)庫中的字段名。String keysStr = list.get(0).keySet().toArray(new String );HSSFSheet sheet = workbook.getSheetAt(workbook.getNumberOfSheets() - 1);HSSFRow row = null;HSSFCell cell = null;introwNum =
18、sheet.getLastRowNum();buildTitleOld(sheet, keysStr);for (inti = 0; i 65535) sheet = workbook.createSheet();buildTitleOld(sheet, keysStr);rowNum = 0;row = sheet.createRow(+rowNum);for (int j = 0; j keysStr.length; j+) cell = row.createCell(j);String key = keysStrj;Object obj = list.get(i).get(key);St
19、ring str = ;if (obj != null) str = obj.toString();cell.setCellValue(str);row = null;cell = null;return workbook;07版本以前引用的包:org.apache.poi.xssf.usermodel。/* *創(chuàng)立excel表頭 * param sheet * paramkeysStr */privatestaticvoidbuildTitleNew(XSSFSheet sheet, String keysStr) if (sheet.getLastRowNum() = 0) XSSFCel
20、l cell = null;XSSFRow row = sheet.createRow(sheet.getLastRowNum();for (int j = 0; j keysStr.length; j+) cell = row.createCell(j);cell.setCellValue(keysStrj);/* list to excel 版本2007以上 sheet行數(shù)上線100萬+* param ListMap* return*/publicstaticXSSFWorkbooklisttoExcleNew(ListMap list)XSSFWorkbook workbook = ne
21、wXSSFWorkbook();String keysStr = list.get(0).keySet().toArray(new String );XSSFSheet sheet = workbook.getSheetAt(workbook.getNumberOfSheets() - 1);XSSFRow row = null;XSSFCell cell = null;introwNum = sheet.getLastRowNum();buildTitleNew(sheet, keysStr);for (inti = 0; i 1048575) sheet = workbook.create
22、Sheet();buildTitleNew(sheet, keysStr);rowNum = 0;row = sheet.createRow(+rowNum);for (int j = 0; j keysStr.length; j+) cell = row.createCell(j);String key = keysStrj;Object obj = list.get(i).get(key);String str = ;if (obj != null) str = obj.toString();cell.setCellValue(str);row = null;cell = null;ret
23、urn workbook;以上就是兩種excel文件格式的具體實現(xiàn)。07版以后的擴展名都是.xlsx,是用新的基于XML的壓縮文件格式取代了其目前專有的默認(rèn)文件格式,在傳統(tǒng)的文件名擴展名后面添加了字母x即.docx取代.doc、.xlsx取代.xls,等等,使其占用空間更小,可以向下兼容xls。在做I/O輸出的時候需要區(qū)別兩個版本的excel文件,并修改對應(yīng)的后綴名。3. 文件excel文件.xls或者其對應(yīng)的zip包導(dǎo)入到數(shù)據(jù)庫:在文件導(dǎo)入數(shù)據(jù)庫的時候這里考慮了兩張情況,數(shù)據(jù)表建表與否。情況一,數(shù)據(jù)庫表已經(jīng)建好,且表名對應(yīng)文件名,字段名對應(yīng)文件表頭,就可以實現(xiàn)文件的直接導(dǎo)入,流程圖如下:這里
24、就不再詳細(xì)的貼出相關(guān)代碼, 說明幾個值得注意的地方:1 在寫入數(shù)據(jù)之前,需要讀取數(shù)據(jù)庫中對應(yīng)表的字段名,作為全局變量使用,以便匹配list里面對應(yīng)的數(shù)據(jù);2 如果是ZIP包,里面可能存在多個文件的情況,在處理多個文件的時候,需要對文件進展遍歷并且和數(shù)據(jù)庫里面的數(shù)據(jù)表一一對應(yīng),對沒有建表的文件拋出異常,其余文件正常導(dǎo)入。情況二,數(shù)據(jù)庫未建表,但是上傳的文件為ZIP包,且里面包含了一個SQL文件夾,流程圖如下:在執(zhí)行SQL文件的時候,sql語句必須符合語法規(guī)那么,要不然會導(dǎo)致建表失敗,可以批量的進展建表操作和文件的導(dǎo)入,目前支持informix數(shù)據(jù)庫和oracle數(shù)據(jù)表。在處理所有數(shù)據(jù)的時候都是采
25、用批處理,在一定程度上提高了數(shù)據(jù)的處理速度。以下是一些比較重要的方法實現(xiàn):/*獲取數(shù)據(jù)表的字段信息*/publicstatic MapgetTableInfo(Connection conn, StringtableName)MapcolInfo = newHashMap();Stringsimpleselect = select * from +tableName;ResultSetrs;try rs = conn.prepareStatement(simpleselect).executeQuery();ResultSetMetaDatadbMeta = rs.getMetaData();
26、for (inti = 1; i= dbMeta.getColumnCount(); i+) if (ROWNUM.equals(dbMeta.getColumnName(i)continue;/ 保存列名和codeStringcolName = dbMeta.getColumnName(i).toLowerCase();intjavacode = dbMeta.getColumnType(i);colInfo.put(colName, javacode); catch (SQLExceptione) e.printStackTrace();ImportWorker.err = 查詢數(shù)據(jù)表信息異常;returncolInfo;2、本申請的具體實施例將上述總體技術(shù)方案放到一個具體的應(yīng)用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京郵電大學(xué)《程序設(shè)計語言B》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西省上饒市2024年中考數(shù)學(xué)二模試題含答案
- 九江職業(yè)大學(xué)《商業(yè)推廣設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇航空職業(yè)技術(shù)學(xué)院《Premere視頻編輯應(yīng)用與實踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 黃淮學(xué)院《舞蹈編創(chuàng)(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】第十二章 簡單機械 章末練習(xí)-2024-2025學(xué)年八年級下冊人教版物理
- 重慶商務(wù)職業(yè)學(xué)院《工程制圖與CAD》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶第二師范學(xué)院《藥物流行病學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江長征職業(yè)技術(shù)學(xué)院《普通生物學(xué)(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江橫店影視職業(yè)學(xué)院《建筑工程計里與計價》2023-2024學(xué)年第一學(xué)期期末試卷
- 鋼材壓延加工生產(chǎn)技術(shù)
- 農(nóng)村教師政協(xié)提案范文
- JT-T 1495-2024 公路水運危險性較大工程專項施工方案編制審查規(guī)程
- 2024年高級養(yǎng)老護理員職業(yè)鑒定考試題庫大全-下(多選、判斷題)
- 數(shù)學(xué)學(xué)科的重要性與應(yīng)用
- 【閱讀提升】部編版語文五年級下冊第二單元閱讀要素解析 類文閱讀課外閱讀過關(guān)(含答案)
- 病理科醫(yī)院感染控制
- 購銷合同電子版完整版
- 福建省福州市延安中學(xué)2023-2024學(xué)年八年級上學(xué)期期末物理模擬試卷+
- 2024年度醫(yī)院肝膽外科實習(xí)生帶教計劃課件
- 微機原理與接口技術(shù)考試試題及答案(綜合-必看)
評論
0/150
提交評論