ホームページ  >  記事  >  バックエンド開発  >  PHP は大きな CSV ファイルを読み取り、データベースにインポートします。

PHP は大きな CSV ファイルを読み取り、データベースにインポートします。

WBOY
WBOYオリジナル
2016-06-20 12:48:091020ブラウズ

PHP はどのようにして大きな CSV ファイルを読み取り、データベースにインポートしますか?

数百万のデータ項目を含む CSV ファイルの場合、ファイル サイズが数百 MB に達する場合があり、単に読み込むとタイムアウトまたはフリーズする可能性があります。

CSV ファイルのデータをデータベースに正常にインポートするには、バッチ処理が非常に必要です。

次の関数は、CSV ファイルで指定されたデータの特定の行を読み取ります:

/*** csv_get_lines CSV ファイル内の特定の行のデータを読み取ります * @param $csvfile csv ファイルのパス * @param $lines 読み取る行数 * @param $offset 開始行の数 * @return array **/ function csv_get_lines($csvfile, $lines, $offset = 0) { if (!$fp = fopen($csvfile, 'r')) { return false; } $i = $j = 0; while (false !== ($line = fgets($fp))) { if( $i++ < $offset) { 続行; } ブレーク; } $data = array(); while(($j++ < $lines) && !feof($fp) ; fclose($fp); return $data; }
メソッドの呼び出し:



$data = csv_get_lines('path/bigfile.csv', 10, 2000000);

print_r($data);

関数は主に行位置決めのアイデアを使用して、開始行番号をスキップすることでファイル ポインターの位置決めを実現します。

データがデータベースにどのように保存されるかについては、この記事では詳しく説明しません。

上記の機能は 500M 以内のファイルでテストされていますが、それより大きなファイルではテストされていません。使用または改善を検討してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:オペレーター次の記事:オペレーター