世纪星读取数据行成文档_简单的从txt文档逐行读取数据,写入数据库,2万行数据执行了20分钟,如何提高程序执行速度?...

这篇博客讨论了一个VB.NET程序的问题,该程序从一个包含26000行的TXT文件中逐行读取数据,并将其插入数据库。由于执行时间长达20分钟,作者寻求提高程序执行效率的方法。目前的实现方式是使用StreamReader逐行读取,然后调用存储过程进行INSERT操作。博客中也提到了对一次性传递多行数据、文件流处理和SQL Server导入功能的疑问。
摘要由CSDN通过智能技术生成

环境vb.net,txt文档大概2万6千行,循环逐条写入数据库,存储过程就是个简单的insert,整个循环包含在一个事务中,执行完要20分钟,太慢了,有什么方法提高执行速度吗?fs=File.Open(...

环境vb.net,txt文档大概2万6千行,循环逐条写入数据库,存储过程就是个简单的insert,整个循环包含在一个事务中,执行完要20分钟,太慢了,有什么方法提高执行速度吗?

fs = File.Open(strFullPathFile, FileMode.Open, FileAccess.Read)

objFS = New StreamReader(fs)

While objFS.Peek > -1

inputString = objFS.ReadLine

dataElements = Split(inputString, vbTab)

If Not IsArray(dataElements) Then

Throw New Exception("Data elements in file contains incompatible 850o format. Please check. ")

End If

If dataElements.Length = 1 Then

Throw New Exception("Wrong data delimiter was used in this 850o file. Please check to ensure Tab delimiter is used. ")

End If

If dataElements(0).ToString.Trim = "ENV" Then 'envelope

FromRoleBusinessIdentifier = dataElements(1).ToString.Trim

DocGenerationDateTime = reformatXLDate(dataElements(2).ToString.Trim)

DocumentIdentifier = dataElements(3).ToString.Trim

Environment = dataElements(4).ToString.Trim

End If

If dataElements.LongLength <> 9 Then

Throw New Exception("Data elements in file header does not contain 9 elements. Please check. ")

End If

objUpdCmd.CommandText = "sInsert850oHeader"

objUpdCmd.CommandType = CommandType.StoredProcedure

objUpdCmd.Parameters.Clear()

objUpdCmd.Parameters.AddWithValue...'加参数部分

objUpdCmd.ExecuteNonQuery()

End While

循环部分大概就是这样,外层还有个transaction这里没贴,存储过程就是个insert

业务逻辑很简单:通过ftp下载txt文件到服务器,txt中每行数据代表一条客户订单,要作为一条记录插入到表中,就是这样。索引一个都没有,主键都没有,够简单吧。

另外一楼的回答我有点疑问:一次传多行,怎么实现?相当于传数据集到数据库中?还是传一个字符串,到数据库中再做分割处理?如果是传字符串,varchar还有长度限制。另外怎么把文件流导入内存的?因为我知道readline之后才会进内存。还有sql server导入功能是什么功能?能具体说下怎么实现的吗?

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值