问题描述
各位专家,小妹是菜鸟,特请教各位:我的数据形式如下(txt)ID(字符串)Long(浮点)Lat(浮点)DT(时间)Status(短整)123455116.18839.652014-1-1715:29:200123455116.18839.652014-1-1715:30:201123455116.18839.652014-1-1715:31:200123455116.18839.652014-1-1715:32:200123455116.18839.652014-1-1715:33:200123456116.18839.652014-1-1715:29:200123456116.18839.652014-1-1715:30:201123456116.18839.652014-1-1715:31:201123456116.18839.652014-1-1715:32:200123456116.18839.652014-1-1715:33:200123457116.18839.652014-1-1715:29:200123457116.18839.652014-1-1715:30:201123457116.18839.652014-1-1715:31:201123457116.18839.652014-1-1715:32:201123457116.18839.652014-1-1715:33:200我用什么方法可以在同一个ID范围内,按顺序判断将最后一列的0100110的数据换成0000000?如果是01110有3个1或以上的情况就可以不用管了数据量为千万级,有什么方法可以更快?小妹新手,请大侠多指教!!!
解决方案
解决方案二:
建议你整改数据库,比如分表或分库存储,不要把所有数据都存在一个表中
解决方案三:
我不同意数据量大就应该分表的说法。实际上数据库有分区表可以选择。逻辑上是一个表,这样会给编程带来极大便利。数据库总是要给开发者使用的。而不是给DBA使用的。
解决方案四:
看你的txt用的什么编码了从内容上看有点特殊,除第一行表头之后,后面每一行内容一样长如果每行内容的字节长度也一样,就用Stream.Position+行字节数定位读ID是每一行的头6字节,值是每行的倒数第3字节,并且记下Position以便快速更新(Linux文本文件另说)这样比Stream.ReadLine()+截取要快得多另外每个ID开个线程处理
解决方案五:
以同一个ID的几行数据做判断集?
解决方案六:
引用2楼bwangel的回复:
我不同意数据量大就应该分表的说法。实际上数据库有分区表可以选择。逻辑上是一个表,这样会给编程带来极大便利。数据库总是要给开发者使用的。而不是给DBA使用的。
解决方案七:
看来每行的字符串长度是固定的吧同一个ID的数据是否连续LZ没说单个ID对应多少条数据是否固定也没说数据量是千万级,每个ID都开一个线程的话会泪奔的如果只是为了更改数据,那么可以把数据先按一定规则逐行录入数据库在用更新语句UPdate再查出来写入文本如果是要做程序功能,那么~~~~~~~~~~~坐等高手进来,小弟一起学习了
解决方案八:
千万级别的数据我很奇怪的是为什么要扔txt里....这个txt得多大..
解决方案九:
“千万级”这种问题交给你的Boyfriend吧。
解决方案十:
用内存映射吧
解决方案十一:
引用8楼caozhy的回复:
“千万级”这种问题交给你的Boyfriend吧。
解决方案十二:
cao版写错字了,应该交给JonBentley比较好办拉额,我们大概有思路,但是并不想直接告诉你,因为这些思路来源于一本程序员都应该看的一本书JonBentley的《编程珠玑》其开篇第一章引入正式讨论前滴那个小故事就是,lz应该看看
解决方案十三:
按照“ID,DTdesc”建立索引,然后查询ID等于某个值的、按照DTdesc索引的第一条数据,进行处理。
解决方案十四:
所谓索引,可能有不同的方法。比如说你可以另外生成一个index.txt文本文件,里边保存的是记录的B+索引树。当以随机读取方式读取你的txt文件之前,首先以随机读取方式从B+树上读取记录在txt文件中的开始偏移量(以及记录长度为多少字符)。如果你不会,那么还是使用一个有比较好的索引功能的数据库系统吧。
解决方案十五:
引用11楼wanghui0380的回复:
cao版写错字了,应该交给JonBentley比较好办拉额,我们大概有思路,但是并不想直接告诉你,因为这些思路来源于一本程序员都应该看的一本书JonBentley的《编程珠玑》其开篇第一章引入正式讨论前滴那个小故事就是,lz应该看看
哎,我真的希望我的girlfriend也会一点编程。实际上她连从网页上下载各种文档都不会,到政府网站上半个登记之类的需要先下载文档,她就得找我。哎,做男人咋就这么辛苦呢?
解决方案:
明明性别写的是男楼主请选择
解决方案:
难道楼主做GPS行业的?
解决方案:
该回复于2014-04-10 22:50:11被版主删除