vb2010 Cómo importar el contenido de múltiples campos en datos de Access en una tabla de sqlserver
C#.SqlBulkCopySqlBulkCopy implementa la inserción de datos por lotes. ¿Debería VB también tener la clase SqlBulkCopy?
SqlBulkCopy es una nueva función de .net2.0. Rara vez se usa, pero su función es muy poderosa y su rendimiento es muy superior para la inserción de datos por lotes.
¿Código?/ // ?
//?Inserción masiva
//?
privada?void?BulkInsert()
{
SqlConnection?sqlcon?=?new?SqlConnection("Data?Source=LocalHost.Integrated?Security=SSPI;Initial?Catalog=xiaotest;");
FechaHora ?beginTime?=?DateTime.Now;
DataTable?dt?=?new?DataTable();
dt.Columns.Add("n",?typeof( cadena) );
dt.Columns.Add("nombre",?typeof(cadena));
for(int?i?=?1;?i? 1000; ?i ++)
{
DataRow?r?=?dt.NewRow();
r["n"]?=? i;
r["nombre"]?=? "xiao";
dt.Rows.Add(r);
}
sqlcon.Open();
Uso (SqlBulkCopy?bulk?=?new?SqlBulkCopy("Data?Source= LocalHost;Integrated?Security=SSPI;Initial?Catalog=xiaotest;")) p>
{
bulk.BatchSize?=?1000;
bulk.DestinationTableName?=?DestinationTableName?=? "prueba2";
bulk .ColumnMappings.Add("n", ?" n");
bulk.ColumnMappings.Add("nombre", ?" nombre");
bulk.WriteToServer (dt );
}
DateTime?endTime?=?DateTime.Now;
TimeSpan?useTime?=?endTime?
dtPage .ColumnMappings.
dt.Dispose();
tiempo?=?"?Usar tiempo"?+?useTime.TotalSeconds.ToString()?+?"segundos" ;
sqlcon.Close();
sqlcon.Dispose(); }Después de comparar y probar 1000 datos, la comparación de tiempo entre la inserción del bucle general y la inserción de sqlbulk es la siguiente :
Inserción general: useTime.TotalSeconds.ToString()?+? "usar tiempo". Inserción de compilación: tiempo de uso 0,02 segundos
El rendimiento es muy superior
¡Espero que te ayude!