-
Je pense qu'il vaut mieux que vous lisiez les données du fichier texte dans DataSet
-
Essayez SqlBulkCopy - Insertion en masse dans SQL à partir de l'application C#
// connect to SQL using (SqlConnection connection = new SqlConnection(connString)) { // make sure to enable triggers // more on triggers in next post SqlBulkCopy bulkCopy = new SqlBulkCopy( connection, SqlBulkCopyOptions.TableLock | SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.UseInternalTransaction, null ); // set the destination table name bulkCopy.DestinationTableName = this.tableName; connection.Open(); // write the data in the "dataTable" bulkCopy.WriteToServer(dataTable); connection.Close(); } // reset this.dataTable.Clear();
ou
après avoir fait l'étape 1 en haut
- Créer XML à partir de DataSet
- Transmettre XML à la base de données et effectuer une insertion groupée
vous pouvez consulter cet article pour plus de détails :Insertion en bloc de données à l'aide de la fonction OpenXML de C# DataTable et du serveur SQL
Mais ce n'est pas testé avec 2 millions d'enregistrements, cela ne fera que consommer de la mémoire sur la machine car vous devez charger 2 millions d'enregistrements et l'insérer.