php数据库文件导出代码

 

$servername = "127.0.0.1";
$username = "root";
$password = "********";
$dbname = "data";
$pice = 5000;
$start = 0;
$fileName = 'text.csv';
setLogInfo("脚本开始执行", 'export_csv_file');
while(true){
        // 创建连接
        setLogInfo("establishing the mysql connection......", 'export_csv_file');
        $conn = new mysqli($servername, $username, $password, $dbname);
        // 检测连接
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        //查询数据总条数total
        setLogInfo("读取数据总条数", 'export_csv_file');
        $totalSql = "SELECT count(*) as total FROM card";
        $result = $conn->query($totalSql);
        $total = $result->fetch_assoc()['total'];
        setLogInfo("The number of the data is :" . $total , 'export_csv_file');
        //计算分页批次
        $batchCount = ceil($total/$pice);
        $handel = fopen('test.csv', 'a+');
        for($i = 0; $i < $batchCount; $i++){
                /*if($i == 20){
                        //关闭文件句柄
                        fclose($handel);
                        die;
                }*/
                //设置分页偏移量 读取数据
                $start = $i * $pice; 
                $sql = "select * from card limit " . $start . "," . $pice;
                $res = $conn->query($sql);
                if ($res->num_rows > 0) {
                    while($row = $res->fetch_assoc()) {
                        //将当前批次数据写入文件                
                        fputcsv($handel,[$row['card_id'],$row['card_number']]);
                }
                } else {
                    echo "0 results";
                    die;
                } 
                unset($start,$row,$res,$sql);
        }
        fclose($handel);
        
        //所有批次数据写入完毕关闭数据库链接,退出脚本 die;
        setLogInfo("所有批次数据写入完毕", 'export_csv_file');
        $conn->close();
        die;
}


/**
 * 自定义日志
 * @param $info
 * @param $logFileName
 * @param int $length
 */
function setLogInfo($info, $logFileName)
{
    $time = date('Y-m-d H:i:s') . ' : ';
    $data = $info;
    if(is_array($info)){
        $data = implode(',',$info);
    }
    $data = $time . $data . PHP_EOL;
    $logFileName = $logFileName . '-' . date('Y-m-d') . '.log';
    $outFilePath = $logFileName;
    $handle = fopen($outFilePath, "a+");
    fwrite($handle, $data);
    fclose($handle);
}

/**
 * 导出csv文件
 * @param $filename
 * @param $list
 */
function saveCsv($filename, $list,$mode)
{
    $fp = fopen($filename, $mode);
    if($mode == 'w'){
        fwrite($fp,$list);
    }else{
        foreach ($list as $fields) {
            fputcsv($fp, $fields);
        }
    }
    fclose($fp);
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值