visual valor tipos tipo tabla studio pequeño para grande funciones float demasiado datos dato conversiones alfanumericas c# .net-2.0

valor - La mejor manera de realizar una inserción masiva desde una tabla de datos de C#



valor demasiado grande o demasiado pequeño para un decimal (5)

Así es como lo hago usando un DataTable. Esta es una pieza de trabajo del código TEST.

using (SqlConnection con = new SqlConnection(connStr)) { con.Open(); // Create a table with some rows. DataTable table = MakeTable(); // Get a reference to a single row in the table. DataRow[] rowArray = table.Select(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(con)) { bulkCopy.DestinationTableName = "dbo.CarlosBulkTestTable"; try { // Write the array of rows to the destination. bulkCopy.WriteToServer(rowArray); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }//using

Tengo una DataTable que quiero enviar a la base de datos. Quiero poder decir como

myDataTable.update();

Pero después de leer los docs MSDN, aparentemente esto inserta fila por fila.

Cabe señalar que estas declaraciones no se realizan como un proceso por lotes; Cada fila se actualiza individualmente.

¿Cuáles son mis alternativas?

Edit: estoy usando SQL Server 2005


Esto dependerá en gran medida del RDBMS que esté utilizando y de si existe una opción .NET para ese RDBMS.

Si está utilizando SQL Server, use la clase SqlBulkCopy .

Para otros proveedores de bases de datos, intente buscar en Google específicamente. Por ejemplo, una búsqueda de ".NET Bulk insert in Oracle" arrojó algunos resultados interesantes, incluido este enlace de nuevo a : Bulk Insert to Oracle utilizando .NET .



Si usa SQL Server, SqlBulkCopy.WriteToServer(DataTable)

O también con SQL Server, puede escribirlo en un .csv y usar BULK INSERT

Si usa MySQL, puede escribirlo en un .csv y usar LOAD DATA INFILE

Si usa Oracle, puede usar la función de enlace de matriz de ODP.NET

Si SQLite:


string connectionString= ServerName + DatabaseName + SecurityType; using (SqlConnection connection = new SqlConnection(connectionString)) using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { connection.Open(); bulkCopy.DestinationTableName = "TableName"; try { bulkCopy.WriteToServer(dataTableName); } catch (Exception e) { Console.Write(e.Message); } }

Tenga en cuenta que la estructura de la tabla de la base de datos y el nombre de la tabla deben ser los mismos o generará una excepción.