500W数据去重复

我在你看不到的天空 2014-01-02 09:25:36
有个文本文档,里面一行是一条数据,大概有560多W条,数据库有张表,有一列对应文本的数据,怎么找出文本文档里面有,数据库却没有的数据
...全文
444 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ebaker1024 2014-02-12
  • 打赏
  • 举报
回复
500W 记录对于现代数据库来说实在算不上大事。用几个临时表,很快就解决了。 假设原始数据库在这两个表中: tab01, tab02; 可建立以下临时工作表:tmp00, tmp_total -- 建立索引以提高后面的汇总速度 Create Index i01tmp ON tab01(uid); Create Index i02tmp ON tab02(uid); -- 拷贝tab01 中的记录,去掉重复值 Insert into tmp00 (uid, flag) Select uid, 1 From tab01 Group by uid; -- 拷贝tab02 中的记录,去掉重复值 Insert into tmp00 (uid, flag) Select uid, 2 From tab02 Group by uid; -- 建立索引以提高后面的汇总速度 Create Index i00tmp ON tmp00(uid); -- 分组汇总 Insert into tmp_total ( uid, flag ) Select uid, sum(flag) From tmp_all Group by uid; -- 根据flag字段的汇总值可分3类情况 -- 找出仅存在于tab01 中的uid值 Select uid From tmp_total Where flag=1; -- 找出仅存在于tab02 中的uid值 Select uid From tmp_total Where flag=2; -- 找出两个表的交集部分 Select uid From tmp_total Where flag=3;
  • 打赏
  • 举报
回复
可以考虑用key-value这样的数据库去封装下。然后再查询比较
MiceRice 2014-01-03
  • 打赏
  • 举报
回复
引用 楼主 lizeping1992 的回复:
有个文本文档,里面一行是一条数据,大概有560多W条,数据库有张表,有一列对应文本的数据,怎么找出文本文档里面有,数据库却没有的数据
什么数据库?如果是Oracle的话,直接用SQL Loader把560W数据装入数据库,接着建立索引,最后剩下的就是一句Select的问题了。 借助数据库来完成大数据集运算,总体性能应该是最好的。 程序处理的话,因为你文本文件每行数据并非定长,所以想搞什么并行计算也很麻烦,基本上就只能顺序处理。相当于要进行560W次的数据库检索,虽然有索引的情况下单词检索性能极高,但是估计也要跑个半天。大致方法如下: 1、数据库表中能对应文本的列,建立索引; 2、BufferReader + FileReader打开文件,每次readLine; 3、Select 数据库表看是否存在该行记录(有索引的情况下都是毫秒级执行),没有则写入另一个文件(记录所有不在表中的记录); 4、循环处理下一行。 为了尽量消除网络开销,程序如果能直接在数据库服务器上执行最好。
teemai 2014-01-03
  • 打赏
  • 举报
回复
不要用程序了,用数据库处理吧,把文本信息存到另一个表里。用数据库去操作比较
你好毒你好毒 2014-01-03
  • 打赏
  • 举报
回复
我觉得,先将文本文件的数据插入到临时表(用存储过程进行插入的话,500W数据大概要3-5分钟),然后再去通过sql语句取出相同的部分,至于取出来之后怎么用就看楼主的了
骑士的崛起 2014-01-03
  • 打赏
  • 举报
回复
1.开A线程把文本一行行读出来,把每20个一组放到一个集合里。 2.开n个B线程不停的从集合里取一组,再删除这组数据,执行sql:in(.....),返回结果判断如果不存在,保存到数据库里的另一个表里。 如果表数据不多这么搞速度应该不错。 如果表数据太多,就拆分,办法也有。
致知Fighting 2014-01-03
  • 打赏
  • 举报
回复
500w单列数据才大?直接内存一放,数据库数据读出来放内存,两个一比就好了
ghostkngiht 2014-01-03
  • 打赏
  • 举报
回复
有个思路,不知可不可行。 1.把数据库里的数据读出来存到文件里(能排序最好,不能也无所谓)。 2.对数据库导出的文件(如果没有排序)和原有文本文件用相同的方式排序分别生成新的文件(这么大的数据量排序可以用外排序的方式实现)。 3.对2中生成的两个排序好的文件逐行判断(这个操作大学数据结构里应该学),这样做耗费的时间应该不多。
suciver 2014-01-03
  • 打赏
  • 举报
回复
利用数据库自带的对比
___________小P 2014-01-03
  • 打赏
  • 举报
回复
先读出来 然后去掉重复 我去..好多信息..
别闹腰不好 2014-01-03
  • 打赏
  • 举报
回复
写个程序吧 你可以吧文本文件一行一行的读出来,每读一行查一次数据库,看看是否有,没有你就把这行文本写到另一个文件,也可以写到数据库。
coolbamboo2008 2014-01-03
  • 打赏
  • 举报
回复
好大的文件……这样数据库也要很大吧
  • 打赏
  • 举报
回复
引用 7 楼 ghostkngiht 的回复:
有个思路,不知可不可行。 1.把数据库里的数据读出来存到文件里(能排序最好,不能也无所谓)。 2.对数据库导出的文件(如果没有排序)和原有文本文件用相同的方式排序分别生成新的文件(这么大的数据量排序可以用外排序的方式实现)。 3.对2中生成的两个排序好的文件逐行判断(这个操作大学数据结构里应该学),这样做耗费的时间应该不多。
这个可以有。我是直接再再数据库分表做的,500W在一张表中,删一条都好慢。。分表了快多了
  • 打赏
  • 举报
回复
引用 5 楼 u010006337 的回复:
先读出来 然后去掉重复 我去..好多信息..
能具体一点么。。我也知道要读出来对比。。
  • 打赏
  • 举报
回复
引用 4 楼 u012463264 的回复:
写个程序吧 你可以吧文本文件一行一行的读出来,每读一行查一次数据库,看看是否有,没有你就把这行文本写到另一个文件,也可以写到数据库。
文本1G大.。500多W条。这样太慢。试过了
只是_曾经 2014-01-03
  • 打赏
  • 举报
回复
做起来不难,但把500W数据放到文本里是给什么心态啊!!!
chkaka 2014-01-03
  • 打赏
  • 举报
回复
引用 12 楼 ldh911 的回复:
[quote=引用 楼主 lizeping1992 的回复:] 有个文本文档,里面一行是一条数据,大概有560多W条,数据库有张表,有一列对应文本的数据,怎么找出文本文档里面有,数据库却没有的数据
什么数据库?如果是Oracle的话,直接用SQL Loader把560W数据装入数据库,接着建立索引,最后剩下的就是一句Select的问题了。 借助数据库来完成大数据集运算,总体性能应该是最好的。 程序处理的话,因为你文本文件每行数据并非定长,所以想搞什么并行计算也很麻烦,基本上就只能顺序处 理。相当于要进行560W次的数据库检索,虽然有索引的情况下单词检索性能极高,但是估计也要跑个半天。大致方法如下: 1、数据库表中能对应文本的列,建立索引; 2、BufferReader + FileReader打开文件,每次readLine; 3、Select 数据库表看是否存在该行记录(有索引的情况下都是毫秒级执行),没有则写入另一个文件(记录所有不在表中的记录); 4、循环处理下一行。 为了尽量消除网络开销,程序如果能直接在数据库服务器上执行最好。[/quote] 这个思路可行!
chkaka 2014-01-03
  • 打赏
  • 举报
回复
把文本中的数据对比字段,导入到数据里。然后用sql语句做关联查询。
长笛党希望 2014-01-03
  • 打赏
  • 举报
回复
mark,高手间的对话。。
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧