【问题标题】:fputcsv large data cause "File not loaded completely"fputcsv 大数据导致“文件未完全加载”
【发布时间】:2021-05-26 02:46:14
【问题描述】:

我有大约 2m+ 行需要输出到.csv 文件,因为 afaik 使用 PHP 和 MySQL 中的数据没有任何行数限制。然而,当文件被输出时,它显示“文件未完全加载”(参考Image 1)。

点击确定后,我看到了行数限制(参考图片 2),下面我还附上了脚本。

如何解决让它输出所有行?

图片 1

图片 2

代码

<?php
$filename = 'StockOnHand_' . date('YmdHis') . '.csv';
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=' . $filename);

$conn = new PDO("mysql:host=hostname;dbname=dbname;charset=utf8mb4", $DB_USERNAME, $DB_PASSWORD);

$sql = " select col1, col2 from table ";

// Execute
try {
    $stmt = $conn->prepare($sql);
    $stmt->execute();

    $header = array(
        array('COL1', 'COL2')
    );

    $fp = fopen('php://output', 'w');

    foreach ($header as $row) {
        fputcsv($fp, $row);
    }

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        fputcsv($fp, $row);
    }

    fclose($fp);
    $stmt = null;
    $conn = null;
} catch (PDOException $e) {
    
}

exit;
?>

【问题讨论】:

  • 这看起来像是 Excel 问题,而不是 PHP。

标签: php csv output fputcsv


【解决方案1】:

Excel 电子表格中的最大行数为 1,048,576。

您的脚本已输出所有行,但您无法在 Excel 中加载该文件。

Reference

【讨论】:

  • 嗨..我将其加载为 .csv 对吗? CSV 没有行数限制吧?
  • CSV 没有行数限制,但 Excel 有,无论您阅读何种文件格式。您无法使用 Excel 读取 200 万行的文件。
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多