Le plus simple est d'abord faire une requête pour obtenir toutes les clés de ligne à traiter, mais pas données BLOB. Ensuite, parcourez cette liste (pas en SQL) et récupérez les données BLOB de la ligne en question, générez la miniature par n'importe quel moyen, puis réécrivez-la dans la colonne des vignettes de la ligne. Cela peut prendre un certain temps, mais au moins, vous n'aurez pas à vous soucier des limites de mémoire ou d'autres non-sens frustrants. C'est une bonne idée de le faire quand vous pouvez être sûr que rien d'autre n'utilise la base de données afin de ne pas avoir à vous inquiéter des transactions, et une fois que vous l'avez fait, mettez à jour votre code d'insertion/mise à jour à jour au cours du traitement plutôt que comme une étape de lot séparé. Pour savoir si les images doivent figurer dans la base de données, c'est une bonne idée. Les vignettes devraient probablement être, mais les données d'image elle-même pourraient être assez grandes (en particulier avec plus de lignes), alors peut-être devrait vivre en tant que fichiers séparés avec seulement les noms de fichiers dans la base de données. Vous devez équilibrer la capacité à traiter normalement les données plus rapidement (en n'ayant pas toutes ces données d'image) contre la capacité de garder toutes les données cohérentes (trop facile d'avoir des problèmes si quelque chose fouille dans les données d'image). Je ne peux pas vraiment répondre à cela pour vous car cela nécessite une connaissance plus approfondie de l'application - c'est votre travail - mais j'espère que cela vous dit à quoi vous devriez penser lors de la prise de décision.
Tout d'abord, ne stockez pas d'images dans une base de données. – Jauzsika
pourquoi pas? beaucoup de gens semblent être en faveur de cela. – hanumanDev
@hanumandev: Stockez-les sur le système de fichiers et placez l'URL dans votre base de données. –