我要从一个文本中提取数据,然后将数据存入到SQLSERVER数据库中去。
我现在采用的一行一行的读,先读出一行文本的内容出来,然后对此行文本进行数据提取后写入到数据库中去。
源文本格式为:
GYBSC0111401|1NM_ShengShiHuaChen|460-00-34055-13931|2008-05-20 08:00|1|0|323|41172|6242|0|103|0|18|4|0|0|34|0|149|87|1|0|10|10|0|0|0|50|0|0|0|0|0|0|0|0|35|0|0|0|35|35|148|0|148|0|147|0|0|1|182|0|0|0|0.000000000000000e+00|0|0.000000000000000e+00|48579|5179|12|1.1971061229705811|0|321|0|8|8.0|0.35236749053001404|323|8|0|0|242|0|6|6.0|1.2201223373413086|0|315|180|0|2|178|48579|1|2|2|175|取出的样式为:
GYBSC0111401
1NM_ShengShiHuaChen
460-00-34055-13931
2008-05-20 08:00
…………
也就是将“|”前的内容分别读出来然后写入到数据库中去。每个“|”前对应的就是一个列的数据。
我现在也做出来的,但读5929个上面样式的数据并写到数据库中要用1个小时的时间,如何能减少所需的时间。
除了用是上面的办法外还有其它的办法没有?
只要能提供算法就行,能有源代码最好。谢谢。
我现在采用的一行一行的读,先读出一行文本的内容出来,然后对此行文本进行数据提取后写入到数据库中去。
源文本格式为:
GYBSC0111401|1NM_ShengShiHuaChen|460-00-34055-13931|2008-05-20 08:00|1|0|323|41172|6242|0|103|0|18|4|0|0|34|0|149|87|1|0|10|10|0|0|0|50|0|0|0|0|0|0|0|0|35|0|0|0|35|35|148|0|148|0|147|0|0|1|182|0|0|0|0.000000000000000e+00|0|0.000000000000000e+00|48579|5179|12|1.1971061229705811|0|321|0|8|8.0|0.35236749053001404|323|8|0|0|242|0|6|6.0|1.2201223373413086|0|315|180|0|2|178|48579|1|2|2|175|取出的样式为:
GYBSC0111401
1NM_ShengShiHuaChen
460-00-34055-13931
2008-05-20 08:00
…………
也就是将“|”前的内容分别读出来然后写入到数据库中去。每个“|”前对应的就是一个列的数据。
我现在也做出来的,但读5929个上面样式的数据并写到数据库中要用1个小时的时间,如何能减少所需的时间。
除了用是上面的办法外还有其它的办法没有?
只要能提供算法就行,能有源代码最好。谢谢。
解决方案 »
- 我想用VB连接oracle,执行这一条更新update yong_a set b=1 where a = (控件test1填进去的数字)
- 本版超级大水楼有幸踩到4567,5678的散分
- 文件操作
- ActiveReport2.0不能显示报表全部内容怎么回事?!
- [求教]如何给数组赋值?
- 急急急急急急!!!请问,如何在VB中实现获取本机的IP地址和网卡类型
- 如何从文档中读取我所要的数据???我用的是filesystemobject
- 选取记录的问题
- 请高手指点怎样判断鼠标在按下之后又起来是单击还是持续了一段时间?
- 怎样在程序中打印DataGrid和ADO的Recordset
- 文件格式为bin 的十六进制文件,用串口怎么发送???请教各位!!!
- 在vb里实现选择SQLServer数据库,请高手进来指点下
我不知道你用的是否就是这种做法.如果只是文件尺寸比较大,而要处理的文件数量并不多的话,一次性读入内存,在数组里操作会占用很大资源造成性能下降,可以考虑先手动把文件切割成几个小文件,再一个一个导,当然,也可以自己写一个专门的预处理程序专门用来分割文件.
http://www.connectionstrings.com/?carrier=textfile其实无论用何种方法读,都不会很慢的,估计更新数据库的程序没写好。
我现在是用了一个临时表来解决这个问题的了.使用bulk insert将文本内容导入到表中然后在出临时表取出写到数据表中去.
速度很快一个100多M的文本也只要不到30秒就搞定了.