读DB写入平面文件,超过15,000& 35000条记录

时间:2011-01-25 01:44:10

标签: php mysql

我正在阅读MySQL数据库,其中包含一条返回187,000条记录的查询,我正在将数据写入平面文件。它只是停止在15,000条记录到35,000条记录之间没有任何错误。

我想也许数据库连接超时了所以我开始用LIMIT一次拉出10,000条记录,但它仍然会发生。所以我想它是浏览器或PHP超时。这是我的代码。如果有更好的方法,我完全可以听到。

  $sql->Query($stype.$search);
$checkrows = $sql->rows;

if ($checkrows > 0){
   $fh = fopen($listname, 'w');
   for ($i = 0; $i < $sql->rows; $i++) {
     $sql->Fetch($i);
     $email .= $sql->data[1]."\n";
     fwrite($fh, $email);
     $cot++;
          echo $cot."-".$sql->data[1]."<br>";
   }
   fclose($fh);

 }

4 个答案:

答案 0 :(得分:1)

如果是超时时间,请尝试设置set_time_limit(0)

答案 1 :(得分:1)

这不是PHP中的说法,但您可以使用MySQL轻松地将数据库导出为平面文件格式。使用像这样的查询:

SELECT email FROM database.table 
  INTO OUTFILE '/path/to/file/foo.txt' 
  LINES TERMINATED BY '\n';

但是,这将写入运行MySQL的同一台服务器。您也可以使用MySQL命令行客户端在本地写入来执行类似操作:

mysql -u user --password=mypass \
  -e "SELECT email FROM database.table" \
  -B --skip-column-names > foo.txt

答案 2 :(得分:0)

添加set_time_limit(600);到顶部!你的脚本超时了。

答案 3 :(得分:0)

我的错误是这行代码:echo $email .= $sql->data[1]."\n";

应该是:echo $email = $sql->data[1]."\n";