Je recherche des conseils sur la manière optimale d'insérer un grand nombre d'enregistrements dans une base de données (SQL2000 et versions ultérieures) en fonction d'une collection d'objets. Actuellement, mon code ressemble à l'extrait ci-dessous et chaque enregistrement est inséré à l'aide d'une seule commande simple INSERT (ouvrant et fermant la connexion à la base de données chaque fois que la fonction est appelée!) - Je suis sûr que cela doit ralentir ?).Insérer des enregistrements dans une base de données à partir d'une table de hachage
La routine doit être capable de gérer l'insertion régulière de 100 000 enregistrements et je me demandais s'il y avait un moyen plus rapide (je suis sûr qu'il doit y avoir ???). J'ai vu quelques articles mentionnant l'utilisation de données XML et de routines de copie en masse - est-ce quelque chose que je devrais envisager ou quelqu'un peut-il fournir des exemples simples sur lesquels je pourrais me baser?
foreach (DictionaryEntry de in objectList)
{
eRecord record = (eRecord)de.Value;
if (!record.Deleted)
{
createDBRecord(record.Id,
record.Index,
record.Name,
record.Value);
}
}
Merci pour tout conseil,
Paul.
Merci pour la réponse et oui je suis en utilisant .NET 2.0, donc je vais regarder dans la classe que vous avez mentionné que je voudrais faire l'opération directement sur la base de données si possible. Avez-vous une expérience de la classe SqlBulkCopy? Un grand merci, Paul – Paul
@Paul: Bien sûr. Fait correctement le SqlBulkCopy est très rapide. J'ai aidé des équipes à atteindre 3 ordres de grandeur avec cela. –
Merci Mitch - Je commence à lire et à apprendre! À la votre – Paul