
数据脱敏到文件和文件导入数据库实现.doc
11页我司案号委托日期专利类型技术交底书〔创造或实用新型专利申请专用〕技术交底书名称:数据脱敏到文件和文件导入数据库的实现创造人:技术交底书撰写人:吴阳撰写人联系方式::wuyangwondersoft.固定::创造人所属工程组:研发中心-数据管控产品线本申请涉及的方案是否已在产品上应用〔可选〕:否是 (产品名称) 本申请涉及的方案是否即将在产品上应用:否是 (产品名称) (预计的应用时间) 交底书撰写考前须知:1、专利法予以保护的是技术方案不是功能,因此需要给出实现*种功能的具体技术方案,不能仅仅阐述功能;2、为了获得一个较大的保护围,在能够实现最根本的创造目的的前提条件下,创造人应该在当前实施的最优技术方案根底上发散思维,给出尽可能多的替代方案;3、同一个技术术语在整个交底书里只用一个词来表达,不要用多个词来表达4、代理人和知识产权专员不是技术专家,当他们咨询时,创造人需要耐心讲解;如果代理人或知识产权专员要求补充必要的资料,创造人应当及时补充。
一、缩略语和关键术语定义〔下文出现的英文缩写术语在此提供对应的英文全称和中文译文,或中文专业术语的详细解释〕敏感数据,指不为群众知悉,具有实际和潜在利用价值,丧失、不当使用或未经授权访问对社会、企业或个人造成危害的信息,如个人隐私信息、业务经营信息、财务信息、人事信息、IT运维信息等数据脱敏,指对*些敏感信息通过脱敏规则进展数据的变形,实现敏感数据的可靠保护脱敏数据,指敏感数据经过数据脱敏处理后,不再包含*些敏感信息的数据数据迁移,指将数据从一个载体迁移到另一个载体,比方:从数据库A迁移到数据库B,从文件A迁移到数据库A,从数据库A迁移到文件A等ML,即可扩展标记语言(E*tensible Markup Language)标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等如何定义这些标记,既可以选择国际通用的标记语言,比方HTML,也可以使用像*ML这样由相关人士自由决定的标记语言,这就是语言的可扩展性ML是从SGML中简化修改出来的文件的导出,即将源数据库中脱敏后的数据导入到指定格式的文件中文件的导入,即将e*cel文件经过脱敏操作过后导入到目标数据库中。
二、背景技术以及与本申请相关的现有技术1、背景技术〔即帮助理解本专利技术容的公知常识,您基于什么样的背景创造的该专利〕:随着信息技术的开展与大数据时代的到来,数据流通成为释放数据红利与价值的主要手段和途径,敏感数据在流通中缺乏有效管控,处于高风险状态近年来,敏感数据泄漏事件屡见不鲜敏感数据泄漏带来的不仅仅是经济损失,同时损害了金融机构和政府部门等权威机构的公信力,严重破坏了社会信用体系,影响了相关产业与全社会安康和谐开展在这样的时代背景下,防止敏感数据的泄漏成为了十分重要的问题,因此我们开发了数据脱敏网关数据脱敏网关就是针对敏感数据进展数据脱敏,保证数据在做数据迁移的和使用时的平安性和性数据脱敏网关主要实现了敏感数据在数据库之间的脱敏和迁移,针对客户的需求,又参加了数据库到文件〔支持的文件格式有csv,e*cel,json,*ml,t*t〕的脱敏,和文件〔暂时只支持07版以前的e*cel,或者e*cel压缩打包后的zip包〕到数据库的脱敏2、与本专利最接近的现有技术〔现有技术就是已经有的技术,如果该现有技术的缺点正是本创造能够消除的,则为相关现有技术,否则为非相关现有技术;相关现有技术中,与本专利共同的技术特征最多的,可视为最接近现有技术〕最接近现有技术是数据脱敏网关中的数据迁移管理模块,实现了数据库之间的脱敏迁移。
2.1现有技术的实现方案〔给出现有技术的系统图、流程图,结合附图说明现有技术的实现过程〕数据迁移管理模块作为数据脱敏网关的核心功能,其下又分为三个子模块:策略管理,任务管理,任务日志管理,集成在数据脱敏网关中如下列图:策略管理:实现了相关脱敏策略的增删改查操作任务管理:实现了相关脱敏任务的增删改查操作,改子模块是脱敏迁移管理的核心功能,整个的数据脱敏迁移都是在这里实现,目前实现了数据库到数据的脱敏迁移,数据到csv文件的脱敏迁移任务日志管理:简单的任务日志查看功能数据库脱敏迁移流程图2.2现有技术的缺点〔一定是采用本专利申请技术方案后能够消除的缺点,缺点可以是多个〕现有数据迁移管理模块中,只是针对了数据库之间的脱敏迁移,在文件〔e*cel〕方面功能还不够完善,只存在简单的csv文件的导出功能,在遇到客户需要其他文件格式的时候,比方e*cel,*ml,json等文件格式的时候没有良好的支持三、本申请所解决的技术问题〔针对上述2.2点提出的缺点,引出创造动机,阐述本专利要解决的技术问题〕在数据脱敏中,脱敏后的数据存放在一个List
难点在于怎样将数据按照每个文件对应的格式转换写入到文件当中,而且在e*cel文件存在不同版本的区别,07版以前的e*cel每一个sheet只支持65535行的数据量,而07版本以后支持100万+行的数据量,map中的健对应e*cel的表头列名ml的数据也有固定的格式要求,下文会贴出例子;而json数据在Java里面有现有的方法实现,就不做详细的阐述了ML数据格式:
后文中会用到一个公共的Document对象转String的方法:public static String doctoString(Document document) { String str = ""; try { // 使用输出流来进展转化 ByteArrayOutputStream out = new ByteArrayOutputStream(); // 使用UTF-8编码 OutputFormat format = new OutputFormat(" ", true, "UTF-8"); *MLWriter writer = new *MLWriter(out, format); writer.write(document); str = out.toString("UTF-8"); } catch (E*ception e*) { e*.printStackTrace(); } return str; }1. List
根据*ml文件的根本格式看出,在做具体实现的时候,我是把list里面的数据放在nodes标签里面的,其子标签node则对应数据库里面的每一行数据,数据库对应的字段名则是key标签里面的label属性这里的重点就是找出最简单的方法将数据库里面的字段名写入到label里面,在这里我们只需要遍历list[0]中的数据就能得出数据库中的字段名了,实现代码如下: public static String listto*ml(List list) throws E*ception { //初始化一个document对象,用来添加*ML容Document document = DocumentHelper.createDocument();//初始化一个Element对象,其表示*ML文档中的元素,元素可包含属性,其他元素或文本,如果元素含有文本,则在文本节点中表示该文本,文本永远存储在文本节点中此时创立了一个父节点nodes,用于记录list里面的所有数据Element nodesElement = document.addElement("nodes"); int i = 0; //遍历list for (Object o : list) { //初始化Element对象,创立nodes节点的子节点node,用于记录每一行数据。
Element nodeElement = nodesElement.addElement("node"); if (o instanceof Map) { //遍历mapfor (Object obj : ((Map) o).keySet()) { //初始化Element对象,创立node节点的子节点key,用于记录每一格的具体数据Element keyElement = nodeElement.addElement("key"); //key节点的label属性,即map的健,对应数据库的字段名keyElement.addAttribute("label", String.valueOf(obj)); //key节点的具体容,即map的值,对应数据库的值keyElement.setTe*t(String.valueOf(((Map) o).get(obj))); } } else { Element keyElement = nodeElement.addElement("key"); keyElement.addAttribute("label", String.valueOf(i)); keyElement.setTe*t(String.valueOf(o)); } i++; } //将Document对象转为字符串返回,在转字符串的时候设定了具体的编码,*ml为UTF8的编码。
return doctoString(document); } 到此就将一个List
