数据去重复与保存
开发工具与关键技术:VS C# 作者:宋永烨 撰写时间:2019/4/23
在将文档自身去除重复后,还有一些步骤后才能保存,去除与数据库中重复的代码,处理一些不是文字但一样要显示在文本框的图片,最后才能保存到数据库中
一、去除与数据库中的重复
对比与自身的去重复,与数据库的去重复的流程稍微有点不同,流程是创建一个新的集合,获取到整张记录了需要与传入数据进行匹配的表的所有数据.将需要判断是否重复的数据去除一个,与整个表所复制的变量形成的集合进行对比,将不重复的文件放入新建的用于去重复的集合中,重复的舍弃
获取到整张表,用来与传入的数据判断是否重复,再创建用来接收的集合
通过循环的方式逐个将传入的数据取出来,赋值给item,创建一个字符串类型的变量serImg用来接收item的字段stem,
为了判断每条数据中是否存在img标签,通过图片标签独有的src路径 来查找到每一条含有图片的数据,如果含有图片,则获取到整个img标签,将serImg的img标签替换为空
接下来的步骤与和自己对比去重复类似就不再截取过多图片,用文字叙述代替
首先处理数据库的图片,流程与需要去重复的数据相似,判断有无src有则替换整个img标签
然后将取出的数据与数据库的数据进行对比,去重复,
注意,和与自己比较不同,第一条数据需要判断是否重复
二、处理图片
将传入的数据的图片进行处理,修改读取的路径,移动储存的物理路径,替换一些关键字符
通过for循环,将去除与数据库中的重复之前赋值的包含img图片的文件进行循环
将每一条需要获取的值,赋值给stem
创建一个正则用于匹配出src =’”/Document/Title/Temp/’之后的除空白符外的任意字符,一次或更多次但尽可能少的匹配(懒惰模式),匹配到双引号之前的一个正则表达式,主要用途是获取文件名称
使用定义好的正则去匹配可能存在图片的字符串,如果存在则执行操作,不存在则跳过
创建一个字符串,接收stem通过自定义的正则regex匹配出文件名称
将路径中的反斜杠替换为斜杠,注;由于反斜杠在正则中表示转义字符,所以需要用转义字符去转义即表现为两个反斜杠
将文件名称拼接一个路径,因为之前之获取了文件名(无后缀),通过Server.MapPath将它转化为路径并赋值给oldPath
将stem的字符通过正则匹配出_images后.双引号之前的内容的值并赋值给path
将path中的反斜杠替换为斜杠,通过拼接字符串的方式拼接一个成路径字符串,通过Server.MapPath转化为字符串并赋值给newPath
将stem通过正则匹配出src=”之后双引号之前的内容,即完整的地址后,用path替换它即可完成读取路径的替换
将图片从旧的临时文件夹移动到新的正式文件夹,路径之前已经获取到了,但获取到的路径可能存在错误,所以最好用放在try catch中
三、保存
文件在分割,处理文件,去除自身与对数据的重复,处理图片后,终于可以报存到数据库了
通过AddRange批量添加到数据库,每成功添加一条数据,SaveChanges就会加一
将上传的数据,错误的数据等,计数后赋值给msg用于返回给调用此方法的回调函数,在页面上给用户显示出具体保存信息
代码来源于老师
- mysql 删除重复数据,并保存最新一条数据
- 删除数据库表内重复数据,只保存一条
- 删除重复数据只保存一条数据
- 使用Entity Framwork 保存数据时,提示不能在对象中插入重复键,违反了PRIMARY_KEY约束
- 删除重复数据只保存一条--ms sql及oracle实现方法
- 防止数据重复,通过session保存url和请求参数来校验
- 公司-->保存时验证数据是否保存重复
- 利用scrapy将爬到的数据保存到mysql(防止重复)
- 作业二:将字符串数组把重复数据剔除后写入一个文件保存起来。
- 使用List保存搜索结果,数据重复
- hive字段重复保存数据异常,大表与大表关联造成的数据倾斜
- Activity基类实现保存Bundle数据,避免空指针及重复劳动
- 将DataTable保存到数据库的数据表中
- 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
- 保存framebuffer数据为图片
- 数据结构(如何在10亿数据中快速查找出重复的数据)
- activity销毁重建情况下异步任务数据保存恢复
- 手动过滤重复字段数据(因为distinct关键字无法使用。。。)
- GridView通过按钮增加行记录(无数据源)可以叠加保存数据!
- Android 分享一个SharedPreferences的工具类,方便保存数据