-
Eu acho que é melhor você ler os dados do arquivo de texto no DataSet
-
Experimente o SqlBulkCopy - Inserção em massa no SQL do aplicativo 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
depois de fazer o passo 1 no topo
- Criar XML a partir do DataSet
- Passe XML para o banco de dados e faça a inserção em massa
você pode verificar este artigo para detalhes:Inserção em massa de dados usando C# DataTable e função OpenXML do servidor SQL
Mas não foi testado com 2 milhões de registros, apenas consumirá memória na máquina, pois você terá que carregar 2 milhões de registros e inseri-los.