C#处理千万级数据逐行读取及更新问题

问题描述

各位专家,小妹是菜鸟,特请教各位:我的数据形式如下(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被版主删除

时间: 2024-12-20 16:43:27

C#处理千万级数据逐行读取及更新问题的相关文章

shell程序:逐行读取一文件中的参数且使用此参数每次执行5分钟

#!/bin/bash while read line do #杀掉所有的python程序. killall python2 #用读取到的行的参数作为输入执行*******test.py 的python程序,并将结果记录到行的参数110ut的文件中,也即是一个行参数对应一个日志文件: ./*******test.py $line > {$line}11out & echo $line sleep 20s #得到当前系统中的*******test.py程序运行的行数 wcret=`ps aux

如何逐行读取txt文本?

 如何逐行读取txt文本?Ajax可以实现么 想要读取分行txt文件,并在每行前后添加内容. 如txt文件内容是这样的 http://www.baidu.com/ http://www.google.com.hk/ 我想最终输出的结果是 <a href="error.html" /></a> <a href=""><img src="2.jpg" /></a> 就是这样遍历-请问怎样实现

php逐行读取txt文件写入数组的方法[原创]_php技巧

本文实例讲述了php逐行读取txt文件写入数组的方法.分享给大家供大家参考.具体如下: 假设有user.txt文件如下: user01 user02 user03 user04 user05 user06 user07 user08 user09 user10 user11 user12 逐行读取user.txt并写入数组的方法如下: $file = fopen("username.txt", "r"); $user=array(); $i=0; //输出文本中所有

c++逐行读取txt文件getline漏掉第一行

问题描述 c++逐行读取txt文件getline漏掉第一行 #include #include #include using namespace std; int main() { ifstream fin; fin.open("word.txt"); string str; while (!fin.eof()) { getline(fin, str); fin >> str; cout << str<< endl; } fin.close(); }

vc 文本 比较-vc逐行读取文本行并进行比较?

问题描述 vc逐行读取文本行并进行比较? 文本文件中的一行与其他行的内容有的完全相同,有的不同,如相同就当做是一个内容再输出,如不同,也作为一个输出.例如: 111.222.333.444.555 111.222.333.444.555 111.222.333.444.555 111.222.333.444.555 222.333.444.555.666 111.333.444.555.666 ? 逐行读取并比较后,实际需要输出的结果是 111.222.333.444.555 222.333.4

Bash 下如何逐行读取一个文件

在 Linux 或类 UNIX 系统下如何使用 KSH 或 BASH shell 逐行读取一个文件? 在 Linux.OSX. *BSD 或者类 Unix 系统下你可以使用 ​​while..do..done 的 bash 循环来逐行读取一个文件. 在 Bash Unix 或者 Linux shell 中逐行读取一个文件的语法 对于 bash.ksh. zsh 和其他的 shells 语法如下 while read -r line; do COMMAND; done < input.file 通

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间!这分数据应该有很多同学想要,看看EF的性能! 服务器 现在来向SQL2008R2插入1000000条数据吧 declare @i int; set @i=0; while @i<1000000 begin INSERT INTO [AppDB].[dbo].[MIS_Article] ([Id] ,

node.js实现逐行读取文件内容的代码_node.js

在此之前先介绍一个逐行读取文件内容NPM:https://github.com/nickewing/line-reader,需要的朋友可以看看. 直接上代码: function readLines(input, func) { var remaining = ''; input.on('data', function(data) { remaining += data; var index = remaining.indexOf('\n'); while (index > -1) { var l

Shell逐行读取文件的4种方法_linux shell

在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法.为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率. 方法1:while循环中执行效率最高,最常用的方法. 复制代码 代码如下: function while_read_LINE_bottm(){ While read LINE do echo $LINE done  < $FILENAME } 注释:我习惯把这种方式叫做read釜底抽薪,因为这种方