将mysql中查询出来的数据分段发送?

leihelin5201314 2010-08-19 05:20:47
请问各位大虾,如何将mysql中select出来的几十万行资料数据分段从服务端发送到客户端?我现在只能将整个的数据都发过去,数据太长,客户端不好用,但是一旦限制send函数中的长度,查询出来的数据就会缺损,还出现个别乱码,咋整?将数据分段是考虑到结构还是什么?最好能给个实例,谢谢!
...全文
238 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoxingyu 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 leihelin5201314 的回复:]
请问各位大虾,如何将mysql中select出来的几十万行资料数据分段从服务端发送到客户端?我现在只能将整个的数据都发过去,数据太长,客户端不好用,但是一旦限制send函数中的长度,查询出来的数据就会缺损,还出现个别乱码,咋整?将数据分段是考虑到结构还是什么?最好能给个实例,谢谢!
[/Quote]

你可以一次只查出来1000条记录,
select * from table1 limit 1000;
select * from table1 limit 1001,2000;
这样,服务器一次只传输1000条记录的数据到客户端。
leihelin5201314 2010-08-23
  • 打赏
  • 举报
回复
请问1楼:
如何将数据分段发送?这个具体格式不会写···能给个例子吗?谢谢!
leihelin5201314 2010-08-23
  • 打赏
  • 举报
回复
没写出来···不好意思
zuoxingyu 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 leihelin5201314 的回复:]
to 5#:
像您这样是手动将其分段···我想要的是系统自动分段,然后按段落传输,加入我几十万条数据,这样手动分段会累的···
我想的是,我把这些数据写成了字符串,当传输的时候这段字符串遇到一个提前设定的间隔符,停止,返回,传下一段,只是这个具体的步骤我不会写
[/Quote]

在你的代码里做个循环,拼出SQL语句,应该很简单呀。
leihelin5201314 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 acmain_chm 的回复:]

引用我想用C语言或者C++实现,我觉得应该可以吧?
首先,是数据库,肯定是一次把所有请求的记录集合发送回请求方。 当然你可以自己写个C的程序在中间起代理作用。 客户端的SQL请求发送到这个C代理程序上,C再把SQL语句提交到数据库端,数据库将所有记录一次性返回给请求的C代理程序,然后你可以用你的C代理程序实现你的要求。
[/Quote]

大哥,这个代理程序我已经快实现了,只是不知道如何实现分段发送数据的问题···所以才很着急···
if(clifd < 0)
{
printf("ccccc\n");
continue;
}
else
{ int i;
for(i=0;i++; )
{ if(buf[i]!='\n')
{
send(clifd,buf,500,0);
}
else { break; }
}

}

我将要发送的数据组成字符串了,buf 就是我要发送的字符串,我希望将buf分段,在碰到\n就停止,然后返回发送下一段,但是实现不了···请问怎么改···谢谢!!!



ACMAIN_CHM 2010-08-23
  • 打赏
  • 举报
回复
[Quote]我想用C语言或者C++实现,我觉得应该可以吧?[/Quote]
首先,是数据库,肯定是一次把所有请求的记录集合发送回请求方。 当然你可以自己写个C的程序在中间起代理作用。 客户端的SQL请求发送到这个C代理程序上,C再把SQL语句提交到数据库端,数据库将所有记录一次性返回给请求的C代理程序,然后你可以用你的C代理程序实现你的要求。
  • 打赏
  • 举报
回复
可以考虑先返回记录的总条数,然后,在没有达到这个总记录数的情况下,利用limit每次获取1000条记录。
leihelin5201314 2010-08-23
  • 打赏
  • 举报
回复
to 7#:
我想用C语言或者C++实现,我觉得应该可以吧?只是不知道具体怎么做···很痛苦
ACMAIN_CHM 2010-08-23
  • 打赏
  • 举报
回复
没有这种功能,数据库一般只负责把结果传加。
leihelin5201314 2010-08-23
  • 打赏
  • 举报
回复
to 5#:
像您这样是手动将其分段···我想要的是系统自动分段,然后按段落传输,加入我几十万条数据,这样手动分段会累的···
我想的是,我把这些数据写成了字符串,当传输的时候这段字符串遇到一个提前设定的间隔符,停止,返回,传下一段,只是这个具体的步骤我不会写
duanzhi1984 2010-08-19
  • 打赏
  • 举报
回复
几十万的记录 消耗的内存可想而知。。。

有的时候数据库已经查询出数据,但是因为返回数据量太大而缓慢
liangCK 2010-08-19
  • 打赏
  • 举报
回复
为什么要发几十万行的数据到客户端?
claro 2010-08-19
  • 打赏
  • 举报
回复
分段发送,不可以吗?

在MSSQL2008可以 insert top (1000) 分段插入。考虑换版本!

在原MySQL中将数据表处理为分段执行。try it

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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