问一个超困难的问题,在好几个版都没有人回答。

ygjwjj 2007-06-29 08:38:30
本公司有近千辆车,近年来的养路费缴纳情况如下表:

车辆交费信息   车辆类型  

类型   缴纳日期  
企业名称  
交费金额    
车辆型号   下次交费日期    



这些表格是在一个养路费征收网的网站上显示出来的,只能按公司名称查询,所以一次显示近10W个上面这样的表格,公司领导安排要把这些车辆的交费情况导入到数据库中。把整个查询结果下载下来的HTML文件有900多兆。一次把整个文件读入内存再处理那是不可能的,比定死机。能不能一次读入一个表格,存入数据库后再读入下一个表格呢?

请兄弟姐妹们多指导啊
...全文
495 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
houyichong 2007-07-21
  • 打赏
  • 举报
回复
想从页面抓数据存mssql里?
可以,不过做出来了也会n慢
而且没分页?浏览都让人害怕。
总体部署问题,问其要个接口,直接操作其数据库,抓你要的数据到自己的数据库里。
  • 打赏
  • 举报
回复
建议复制到文本文件
然后写个小程序导入access
池龙 2007-07-01
  • 打赏
  • 举报
回复
超时的问题没什么办法解决。如果是静态页面的话你可以找找断点续传方面的资料,动态页面就只能重新载入了。

不需要“停下来处理完以后再接着读下一段”,你自己建缓冲区,收到数据放缓冲区,一个线程不断的查看缓冲区是否有数据,有就取出来处理就行了。
ygjwjj 2007-07-01
  • 打赏
  • 举报
回复
在控件面板,Internet页上找一个叫做TCPClient的控件。

RemoteHost是你要访问的服务器IP地址
RemotePort设成80,也就是通常WWW服务的端口。

用Open和Close打开关闭连接,用SendBuf(Sendln)和ReceiveBuf(Receiveln)发送和接收数据。

具体的请求和响应你要去找HTTP协议,根据协议来传输就行。

如果你没有这方面经验,建议用顺序读写文本文件的方式进行。

两种方法都要了解HTML文件格式。
---------------------------------------------------------------------------------
这位大哥,这种方法我也想过,但是怎么解决网络情况不好,连接超时的问题是关键。
另外还有一个关键问题就是;读一段数据后要停下来处理完以后再接着读下一段,这也是关键。还不知道这两个问题如何解决?
池龙 2007-06-30
  • 打赏
  • 举报
回复
在控件面板,Internet页上找一个叫做TCPClient的控件。

RemoteHost是你要访问的服务器IP地址
RemotePort设成80,也就是通常WWW服务的端口。

用Open和Close打开关闭连接,用SendBuf(Sendln)和ReceiveBuf(Receiveln)发送和接收数据。

具体的请求和响应你要去找HTTP协议,根据协议来传输就行。

如果你没有这方面经验,建议用顺序读写文本文件的方式进行。

两种方法都要了解HTML文件格式。

lizhongheng 2007-06-30
  • 打赏
  • 举报
回复
10W条 一张Excel也放不下啊
ygjwjj 2007-06-30
  • 打赏
  • 举报
回复
用TCP/IP连端口发请求这个就更好办了,收到一部分处理一部分,处理完就丢掉。缓冲区自己开,不会有内存占用过多的问题。
----------------------------------------------------------------------------------
有作过这种程序的兄弟,具体说说怎么作?
能不能贴点关键代码?
谢谢。
ygjwjj 2007-06-30
  • 打赏
  • 举报
回复
手工的方法,把这个大文件下载,然后自己用打开文本文件的方式一行行读入,做语法分析,把数据取出来。

自动的方法,在程序里用TCP/IP连接服务器80端口,用HTML协议发请求,让服务器返回页面,同上,做语法分析,取数据。

数据取出来就好办了不是~
-------------------------------------------------------------
感谢这位兄弟,但是你这种方法是不是得把整个文件都读入内存然后才能做下一步,这样一来由于占用内存太大,通常情况计算机都死机。
池龙 2007-06-30
  • 打赏
  • 举报
回复
用传统的读写文件方法,比如Windows API CreateFile、ReadFile,和Delphi自己的AssignFile、ReadLn之类,不是一次把文件装入内存的,应该没有问题。

用TCP/IP连端口发请求这个就更好办了,收到一部分处理一部分,处理完就丢掉。缓冲区自己开,不会有内存占用过多的问题。
ygjwjj 2007-06-29
  • 打赏
  • 举报
回复
没有分页?
10W行数据

这样的网站谁敢打开,搞不好电脑会死机
--------------------------------------
主要是他查询页面的程序设计有问题,他只能按照公司名称来查询,当公司车辆很多时就会出现问题。
云中客 2007-06-29
  • 打赏
  • 举报
回复
没有分页?
10W行数据

这样的网站谁敢打开,搞不好电脑会死机
ygjwjj 2007-06-29
  • 打赏
  • 举报
回复
原页面没有分页?分类型查询?直接写出10W条数据?
-----------------------------------------------
就是这么BT的页面,就是一个大页面,长得要命。
jwt1982 2007-06-29
  • 打赏
  • 举报
回复
原页面没有分页?分类型查询?直接写出10W条数据?
ygjwjj 2007-06-29
  • 打赏
  • 举报
回复
HTML文件有900多兆
-----------------
既然是表格,可以复制到EXCEL中,然后使用DTS导到数据库中呵呵,就解决了
-------------------------
问题是网络在浏览器里不能完全打开,900多兆的页面数据,直接死机。
现在的问题只能用程序读取网页数据,一次读取一个表格,处理完以后再读取第二个表格。
我是这样想的,不知道能不能实现?
jwt1982 2007-06-29
  • 打赏
  • 举报
回复
HTML文件有900多兆
-----------------
既然是表格,可以复制到EXCEL中,然后使用DTS导到数据库中呵呵,就解决了
yrwx001 2007-06-29
  • 打赏
  • 举报
回复
建議你到網上找小偷程序,也許對你有幫助
池龙 2007-06-29
  • 打赏
  • 举报
回复
手工的方法,把这个大文件下载,然后自己用打开文本文件的方式一行行读入,做语法分析,把数据取出来。

自动的方法,在程序里用TCP/IP连接服务器80端口,用HTML协议发请求,让服务器返回页面,同上,做语法分析,取数据。

数据取出来就好办了不是~
nobody@noone 2007-06-29
  • 打赏
  • 举报
回复
或者找台2g内存的机器,现在内存也便宜
nobody@noone 2007-06-29
  • 打赏
  • 举报
回复
这样吧,你用些文本编辑器分割一下,1万行存一个,然后放入excel,然后导入数据库

文本编辑比如 UE EditPlus 都可以的

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧