J'ai un petit travail qui prend un fichier texte d'e-mails/codes postaux et les insère dans une table sql server 2005. Il lit chaque ligne du fichier source, vérifie qu'il analyse une adresse e-mail/un code postal valide, crée une commande d'insertion sql, l'ajoute à un générateur de chaîne et l'exécute éventuellement. Je veux faire une seule exécution au lieu des appels sql individuels car il y aura peut-être plusieurs milliers d'insertions.Création d'instructions sql par lots
Cela fonctionne, mais j'aimerais savoir si c'est une mauvaise approche. Quelle est la meilleure pratique ici?
Dim SqlString As String = "insert into [CollectedEmail] values('{0}','{1}');"
Do Until sourceFile.Peek = -1
line = sourceFile.ReadLine
If line.Length > 0 Then
Dim emailAddress As String = Trim(line.Substring(0, EmailLength))
Dim zipcode As String = Trim(line.Substring(EmailLength + 2, ZipCodeLength))
If CVal.validEmail(emailAddress) AndAlso CVal.validZip(zipcode) Then
SQL.AppendLine(String.Format(SqlString, emailAddress, zipcode))
ElseIf CVal.validEmail(emailAddress) Then
SQL.AppendLine(String.Format(SqlString, emailAddress, ""))
Else
badAddresses.WriteLine(emailAddress)
End If
End If
Loop
InsertToDatabase(SQL.ToString)
Merci
Est-ce que l'approche correcte est alors de nettoyer le fichier source d'origine dans un autre fichier plat, puis d'utiliser la classe SqlBulkCopy? – GernBlandston