Maison > Questions et réponses > le corps du texte
Quel est le bon moyen d'utiliser PHP pour traiter un très gros fichier SQLite (des dizaines de gigaoctets)
Il vient de mourir lors de son traitement~~
ringa_lee2017-05-16 13:06:33
Un fichier aussi volumineux ne peut pas être traité par PHP. Pour traiter un fichier, PHP doit d'abord le lire en mémoire, et la mémoire que chaque script peut utiliser est liée à la limite mémoire dans le fichier de configuration PHP. Tant que votre mémoire est suffisamment grande, vous pouvez la définir sur illimité et utiliser la mémoire maximale du système.
La solution recommandée est de couper d'abord le fichier en petits fichiers, d'utiliser un programme shell tel que sed pour couper le fichier en plusieurs petits fichiers selon une certaine taille (la taille est déterminée en fonction de la taille de votre mémoire PHP), puis de traiter avec PHP.
世界只因有你2017-05-16 13:06:33
Lire ligne par ligne, PHP a cette fonction, lire 3 lignes à la fois, mais SQLite est une base de données locale, la lecture est une question de pilote, cela n'a rien à voir avec PHP, il suffit de ne pas tout imprimer en même temps
阿神2017-05-16 13:06:33
Les données doivent être transférées vers MYSQL puis fournies à PHP pour lecture et écriture. SQLite est à l'origine une petite base de données de fichiers avec une faible capacité à gérer des données volumineuses.
大家讲道理2017-05-16 13:06:33
Choqué ! Pour une si grande quantité de données, SQLite est toujours utilisé.
De plus, si vous lisez des dizaines de gigaoctets dans la mémoire à la fois, à moins que votre mémoire ne contienne réellement des dizaines de gigaoctets, la mémoire sera définitivement saturée.
Il est recommandé d'essayer de diviser cette base de données ou de la convertir vers d'autres types de traitement de base de données.
过去多啦不再A梦2017-05-16 13:06:33
Le traitement de texte de PHP n’est pas idéal et est très lent. La solution de traitement après avoir entré MySQL est réalisable, mais elle prend plus de temps.
Référence Utilisez-le pour vérifier
世界只因有你2017-05-16 13:06:33
Je ne comprends pas SQLite, mais ça doit être difficile de traiter directement un fichier aussi volumineux. Mais il y a une idée générale. Juste un démontage. Suivez la bibliothèque. Regardez ou quelque chose comme ça.
高洛峰2017-05-16 13:06:33
Puisqu'il s'agit d'un fichier SQLite, cliquez simplement sur Database Read->Process->Storage. PHP peut utiliser SQLite directement par défaut.
曾经蜡笔没有小新2017-05-16 13:06:33
Convertissez SQLite en Mysql, puis optimisez l'index, et il ne devrait y avoir aucun problème.