用php获取sqlserver的表数据,读取一部分就停止读取了

用php获取sqlserver的表数据,大概有12万条,我读取的是整个表,为什么每次都只执行了47662条就不执行了;之前写的是每获取一条就插入到我自己的mysql数据表... 用php获取sqlserver的表数据,大概有12万条,我读取的是整个表,为什么每次都只执行了47662条就不执行了;之前写的是每获取一条就插入到我自己的mysql数据表,发现只有47662条,以为是mysql的原因,就写入到文件中,发现同业也只执行了47662次。重申下,数据确实有12万条,因为我用desc和asc两种排序都获取了下,分别都获取到了47662次,没有重复,这是什么原因呢?主要代码如下(sql插入是一样的问题):
$sql="select * from user order by id asc";
$exec=odbc_exec($link,$sql);
/*以上为sql语句和执行sql语句*/
//以读写方式打开data.txt文件
$fp = fopen('data.txt', 'a+');
//创建自增变量
$index=1;
//row是上面写好的odbc读取sqlserver数据库,循环读取每条数据
while ($row =odbc_fetch_array($exec)) {
$str="";
//循环读取每条数据中的每个字段
foreach ($row as $key => $value) {
//清除字段中的空白符并替换掉其中的单引号,并在每个字段后加逗号
$str.="'".str_replace("'", "", trim($value))."', ";
}
//清楚每行数据两边空白,并去掉该行数据最后一个逗号(前面为循环变量,统计id)
$str=$index++.",".rtrim(rtrim($str), ',')."{n}";
//写入文件
fwrite($fp, $str);
}
fclose($fp);
展开
 我来答
jack_wang0823
2017-03-23 · TA获得超过2957个赞
知道大有可为答主
回答量:4143
采纳率:87%
帮助的人:1441万
展开全部

大概是  odbc_exec 的兼容性问题慎高搏  , 我使用 mysqli 局没有这个现象   以前用adodb  也处理过 30万以上的记录..

<?php
require_once('php/json/mysqli_dbset.php');
/* $valstr="";
for ( $i=1;$i<120000;$i++){
$valstr.="(0,'name".$i."'),";
}
$valstr.="(0,'name120000')"念世;
$sql_str="insert into tttt values $valstr";
$rs=$mysqli->query($sql_str);
echo  "insert ok"; */

$sql_str="宽祥select * from tttt";
$rs=$mysqli->query($sql_str);
while($row = $rs->fetch_array(MYSQL_ASSOC)){
echo  $row['iname'].'</br>';
}

?>

追问
我单独获取id这一列写入到文件是没有问题的,这个表有130列,实际有数据的列大概有六七列,获取所有的数据,写入文件就执行不了所有了
追答

你先用mysqli 测试一下, 或者把表发过来 帮你测试一下...

我这边用13个字段写入 无压力

<?php
require_once('php/json/mysqli_dbset.php');
//echo   $sql_str; 
 $sql_str="select * from tttt";
 $ssss="";
$rs=$mysqli->query($sql_str);
while($row = $rs->fetch_array(MYSQL_ASSOC)){
$ssss.=  $row['id']."-" .$row['iname1']."-".$row['iname2']."-".$row['iname3']."-".$row['iname4']."-".$row['iname5']."-".$row['iname6']."-";
$ssss.=  $row['iname7']."-".$row['iname8']."-".$row['iname9']."-".$row['iname10']."-".$row['iname11']."-".$row['iname12']."-";
$ssss.=  $row['iname13'].'{\n}';

$fp = fopen('data.txt', 'a+');
fwrite($fp, $ssss);
fclose($fp);
echo  "ok";
?>
龙氏风采
2017-03-22 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12817
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
用php获迟简取sqlserver的表数据,读取一部分就停止读取了:
需要码拆裤转换御宏一下类型cast(content as text) content
追问
大神,为什么要转换类型呢?另外这个转换类型代码是写在哪儿的呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿巴巴fGw
2017-03-22 · TA获得超过677个赞
知道小有建树答主
回答量:1470
采纳率:84%
帮助的人:511万
展开全部
数据量大建议用Oracle。
追问
用的php,习惯性的操作mysql比较方便,另外这个问题貌似跟数据库没有关系,我写入文件中,也是只写入了一部分,并没有全部写进去
追答
跟数据库没有关系
写文件只能写47662条的话,你可以使用队列。一条条慢慢写。一次性写12万条数据,服务器难免受不了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清风之无痕岁月05
2017-03-22 · TA获得超过236个赞
知道小有建树答主
回答量:487
采纳率:77%
帮助的人:142万
展开全部
也有可能数宴数袜据库连接超时了.都不建议进行晌激大量操作.
你可以用PHP输出原表整个记录数看毕搏看count
更多追问追答
追问
原表count就是12万多,我设置set_time_limit(0);永不超时了,
追答
那你只能分段运行了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式