我们希望将52000个文件(
我有一个包含文件名的
.pdf
,.xls
,.doc
等)导入到SQL Server 2012数据库中。我有一个包含文件名的
Dossier_fichier.txt
文件。我将这些名称加载到集合中,并循环遍历该集合并尝试在PiecesJointes
目录中查找这些文件,并将其转换为字节并使用此代码插入到数据库中:var dossierFichiers = addOrUpdateHelper.ReadEntities<DossierFichier, DossierFichierMap>("dossier_fichier.txt").ToArray();
// (2) Parcourir toutes les instances de DossierFichier chargées + Lire le fichier référencé + Le charger dans la propriété Fichier
var dirPath = System.IO.Path.Combine(Environment.CurrentDirectory, "piecesJointes");
var nbfichier = 0;
foreach (var df in dossierFichiers) {
try {
var path = System.IO.Path.Combine(dirPath, string.Concat( df.Code,"_", df.Nom));
df.Fichier = File.ReadAllBytes(path);
context.DossierFichier.Add(df);
context.SaveChanges();
Logger.Info("Le fichier {0} a été inséré", df.Nom);
nbfichier++;
} catch (FileNotFoundException ex) {
Logger.Error("Fichier {0} : {1}", df.Nom, ex.Message);
} catch (Exception ex) {
Logger.Error("Fichier {0} : {1}",df.Nom, ex.Message);
}
}
在插入了4000个文件后,我遇到了OutOFMemoryException
错误,并且花费了很长时间(60小时)。请问您如何在不出现OutOfmemoryException
的情况下插入所有这些文件,并且加快速度?
DossierFichier
是什么,我就一点头绪都没有。它取决于你为什么需要这些文件字节。如果你只是读取字节并将它们存储在某个地方,我的答案将与你需要整个程序长度的内存不同。 - TheLethalCoder