現在、配列とfputcsvを使用してMySQLテーブルをcsvファイルにエクスポートしています。これは素晴らしいですが、私はこの方法のために大きすぎる(100,000 +行)テーブルを持っているので、私のサイトがタイムアウトします。PHP/PDOで大きなMySQLテーブルをCSVにエクスポート
私の現在のコードは;
<?php
//open database connection
require ('../database-config.php');
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=exported_archive_all.csv');
//SQL Query for Data
$sql = "SELECT * FROM inverter_data_archive;";
//Prepare Query, Bind Parameters, Excute Query
$STH = $dbh->prepare($sql);
$STH->execute();
//Export to .CSV
$fp = fopen('php://output', 'w');
// first set
$first_row = $STH->fetch(PDO::FETCH_ASSOC);
$headers = array_keys($first_row);
fputcsv($fp, $headers); // put the headers
fputcsv($fp, array_values($first_row)); // put the first row
while ($row = $STH->fetch(PDO::FETCH_NUM)) {
fputcsv($fp,$row); // push the rest
}
fclose($fp);
?>
Iが可能なアプローチは、クエリ結果セットから個々のデータ行を読み取り、PHPに直接書き込むことであることを読んだ://出力は、等次の行を読み取ります。大規模な配列を構築したり、メモリ内にcsvを構築したりするのではなく、
私はいくつかのことを試しましたが、私はループのために苦労していますので、これを達成する方法についての助けがあれば大いに感謝します。
は、なぜあなたはそれを直接行うことができますPHPでこれを行う をupload_max_filesizeのようにphp.iniファイル 検索検索maxと折り目値を確認してください? http://stackoverflow.com/questions/356578/how-to-output-mysql-query-results-in-csv-format –
[こちら](http://stackoverflow.com/questions/4249432/export- to-csv-via-php)を使用します。それはあなたに役立つことができますか? – cachique
このページの例では、テーブル全体が配列に読み込まれるため、同じメモリ/タイムアウトの問題が発生します。 – EllBrandon