2017-01-13 10 views
0

500,000行と81列のCSVファイルを読み込み、データベースに挿入しようとしています。 CSVサイズは160メガバイト前の行を反復せずに特定の行で大きなcsvを読み始める

続いていることは私のコードこれは、約1時間の作品

$file = fopen($path, 'r'); 
while (($line = fgetcsv($file)) !== FALSE) { 
} 

、アクセスは約100 000を記録してから停止処理で、「接続がリセットされました」というエラーが表示されます。私はPHPの実行時間制限とメモリの制限を増やしてみましたが、効率的なソリューションではありません。

前の行を繰り返すことなく、特定の行からCSVを読み始めることはできますか?

+0

おそらく、バッチプログラムを作成する必要があります。 –

+0

これはLinuxサーバーで動作しますか? – Jass

+0

[this](https://wpguru.co.uk/2014/02/how-to-run-php-from-the-command-line-in-linux)のようなもの –

答えて

0

必要な魔法の機能はfseek()です。前回の終了時にメモを取って処理を続行できます。しかし、各行の長さが異なることを覚えておく必要があります。したがって、ファイル内の正しい位置を見つけるのは少し難しいです。

最初にCSVを取り除くことをお勧めします。固定列サイズのSqliteのようなものを使用してください。

関連する問題