如何读取超大文本文件
来源:互联网 发布:win10自带linux 编辑:程序博客网 时间:2024/05/17 01:02
要使用超大的文本文件进行业务处理,有近10M大小,超过17万行, 1.如何才能读取超过17万行的文本文件,2.如何把它每2000个分成1个小文本文件
看来所谓的行,就是记录。数组的上限似乎可以大于17万。
可不一定全部读入,打开文件后,按记录要求只读入游泳的,就简单多了。
还可以考虑,使用ado技术,把文本文件作为数据库处理。
分割文件,在我看来是“得不偿失”的做法。 1、用普通文件读取,读一句对比一句,或者是读取到需要的值(也就是查找),再来对比,不用全部加载到内存中(即是用变量读出来);
2、读入到数据库中,再进行相应的处理。建议用ADODC和Datagrid控件,不推荐用MSFlexgrid和MSHFlexgrid控件,Datagrid控件只会加载当前记录以及前后少量记录,需要的时候才会动态读取,就算你有100万行对内存也影响不大。
楼主最好稍微详细点说明一下数据的组成及如何对比(处理),可能更易找到解决之道。
可以偿试当数据库来读,数据库引擎不会一次将所有记录在入内存,而是根据需要来进行磁盘交换:
Dim cn As ADODB.Connection, rs As ADODB.Recordset
Set cn = New ADODB.Connection
'打开连接,只要指定文本文件所在目录
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=c:/txttest/;" _
& "Extended Properties= ""text;HDR=No;FMT=Delimited """
'打开记录集
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient '这个必须是客户端游标,不然AbsolutePosition属性不可用
rs.Open "SELECT * FROM [t.txt]", cn '指定文本文件名称
'定位到第20000行
rs.AbsolutePosition = 20000
Debug.Print rs.Fields(0)
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
如果用rs.movenext来循环读取数据,这样你可以很简单的将文件分隔成20000行的小文件。用这种方法可以注释掉rs.CursorLocation = adUseClient,这样默认是服务器端游标,性能应该会更好点。
- 如何读取超大文本文件
- Java读取超大文本文件
- Java读取超大文本文件
- 超大文本文件 按块读取
- C#读取超大文本文件的部分内容
- 如何读取、修改文本文件
- 如何读取、修改文本文件
- 如何读取文本文件
- 如何逐行读取文本文件
- WinStoreApp如何读取文本文件
- Matlab如何读取文本文件
- [Python]如何取出一个超大文本文件的最后几行
- 如何读取超大容量文本txt文件
- PHPExcel如何读取超大excel文件
- java分割超大文本文件
- 如何使用C#读取文本文件
- 如何使用C#读取文本文件
- matlab 中如何读取文本文件
- LifeRay Portal 6学习笔记9:Liferay与MYSQL的集成
- Access restriction问题:
- MySQL中Max+Group BY查询最大值记录无效
- [运行错误] mspdb80.dll无法找到
- UBIFS设计简介 - A Brief Introduce to the Design of UBIFS
- 如何读取超大文本文件
- DataList控件部分使用方法
- Windows下,dbus的hello world
- JavaScript,只有你想不到
- 矩阵模板
- 高级DVD机Progressive Scan技术介绍
- 在Linux中增加软路由的方法
- Linxu svn
- 图片存储之BLOB : get field slot from row