Maison >développement back-end >tutoriel php >Comment lire des fichiers CSV volumineux et les importer dans la base de données avec PHP

Comment lire des fichiers CSV volumineux et les importer dans la base de données avec PHP

墨辰丷
墨辰丷original
2018-05-19 09:43:502138parcourir

Cet article présente principalement la méthode de lecture de gros fichiers CSV dans la base de données avec PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment PHP lit-il les gros fichiers CSV et les importe-t-il dans la base de données ?

Pour les fichiers CSV contenant des millions d'éléments de données, la taille du fichier peut atteindre des centaines de Mo. S'il est simplement lu, il est susceptible d'expirer ou de se bloquer.

Afin de réussir à importer les données du fichier CSV dans la base de données, le traitement par lots est très nécessaire.

La fonction suivante lit certaines lignes de données spécifiées dans le fichier 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) {
			continue; 
		}
		break;
	}
	$data = array();
	while(($j++ < $lines) && !feof($fp)) {
		$data[] = fgetcsv($fp);
	}
	fclose($fp);
 return $data;
}

Méthode d'appel :

$data = csv_get_lines(&#39;path/bigfile.csv&#39;, 10, 2000000);

print_r($data);

La fonction utilise principalement l'idée de positionnement des lignes, via Skip le numéro de ligne de départ pour obtenir le positionnement du pointeur de fichier.

Quant à la manière dont les données sont stockées dans la base de données, cet article n'entrera pas dans les détails.

La fonction ci-dessus a été testée sur des fichiers de moins de 500 Mo et fonctionne correctement. Elle n'a pas été testée sur des fichiers plus volumineux. Veuillez envisager de l'utiliser ou de l'améliorer.

Cet exemple de PHP lisant un gros fichier CSV et l'important dans la base de données est tout le contenu partagé par l'éditeur. J'espère qu'il pourra vous donner une référence.

Recommandations associées :

sauvegarde automatique php Base de données méthode de table

php mysqlbase de donnéesComment encapsuler des classes

php comment encapsuler mongodbbase de données

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn