Maison > Article > développement back-end > Comment lire un gros fichier CSV en php et l'importer dans l'exemple de base de données
L'éditeur suivant vous apportera un exemple de lecture d'un gros fichier CSV dans la base de données avec PHP. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil
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('path/bigfile.csv', 10, 2000000); print_r($data);
La fonction utilise principalement l'idée de positionnement des lignes, en sautant le numéro de ligne de départ Pour réaliser 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.
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!