public partial class ASP_NET : System.Web.UI.Page
{
private DateTime startTime;
string connString = "";//数据库连接
protected void Button1_Click(object sender, EventArgs e)
{
startTime = DateTime.Now;
SqlConnection srcConnection = new SqlConnection();
srcConnection.ConnectionString = connString;
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = srcConnection;
sqlcmd.CommandText = "select * from abc"; //将这个表的数据复制到"bcd"表中
sqlcmd.CommandType = CommandType.Text;
sqlcmd.Connection.Open();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlcmd;
da.Fill(dt);
SqlBulkCopy sbc = new SqlBulkCopy(connString,SqlBulkCopyOptions.UseInternalTransaction); //支持事物
sbc.BulkCopyTimeout = 5000;
sbc.SqlRowsCopied +=new SqlRowsCopiedEventHandler(OnRowsCopied);
sbc.NotifyAfter = dt.Rows.Count;
try
{
sbc.DestinationTableName = "bcd";
sbc.WriteToServer(dt); //开始复制数据
}
catch (Exception ex)
{
lblCounter.Text = ex.Message.ToString();
}
finally
{
sqlcmd.Clone();
srcConnection.Close();
}
}
//复制完成,响应事件
private void OnRowsCopied(object sender, SqlRowsCopiedEventArgs args)
{
lblCounter.Text += args.RowsCopied.ToString() + " rows are copied<Br>";
TimeSpan copyTime = DateTime.Now - startTime;
lblCounter.Text += "Copy Time:" + copyTime.Seconds.ToString() + "." + copyTime.Milliseconds.ToString() + " seconds";
}
}
分享到:
相关推荐
2. **设置目标表名**:通过设置SqlBulkCopy的DestinationTableName属性,指定要插入数据的目标表名。 ```csharp bulkCopy.DestinationTableName = "YourTableName"; ``` 3. **映射数据源列与目标列**:如果数据...
通常,你需要创建一个存储过程,然后通过调用这个过程来批量插入数据。例如,你可以创建一个接受`OracleDataTable`作为参数的存储过程,然后在C#中调用它: ```csharp OracleCommand cmd = new OracleCommand(...
在"C#大数据效率批量插入Access-demo"这个示例项目中,很可能是提供了一个实际的C#代码示例,演示了如何使用上述方法将大量数据高效地导入到Access数据库。通过分析和学习这个示例,开发者可以了解并掌握在C#环境下...
2. **设置目标表名**:通过`DestinationTableName`属性设定要插入数据的表名: ```csharp bulkCopy.DestinationTableName = "MyTable"; ``` 3. **映射源数据和目标列**:如果源数据和目标表的列不完全匹配,可以...
`SqlBulkCopy`是.NET Framework中的一个类,用于快速大量地将数据从一个数据源复制到SQL Server表中。它非常适合于一次性导入数十万甚至上百万条记录,其性能远超于普通的INSERT语句。使用SqlBulkCopy,你可以指定...
2. **Bulk Copy(批量拷贝)**:在ADO.NET中,SqlBulkCopy类提供了快速批量插入数据的能力。它允许一次性将大量数据从DataTable或IDataReader对象复制到SQL Server表,大大提高了性能。使用时,首先创建SqlBulkCopy...
SqlBulkCopy允许快速将大量数据从DataTable或IDataReader对象复制到SQL Server表中,其性能远超传统的逐行插入。 其次,多线程并发提交是优化数据库操作的另一种方法。在处理大量数据时,可以通过创建多个线程,每...
这个类提供了一种高效的方法,将DataTable、IDataReader或IList对象中的数据复制到SQL Server表中。例如: ```csharp using (var bulkCopy = new SqlBulkCopy(conn)) { bulkCopy.DestinationTableName = ...
对于CSV文件,可以创建一个存储过程,接收文件路径作为参数,然后在存储过程中读取文件并插入数据。或者,可以在C#代码中使用SqlBulkCopy类,它专为大量数据的快速复制而设计。 在处理数据库时,确保正确设置数据库...
`SqlBulkCopy` 是 .NET Framework 提供的一个类,专门用于快速地将大量数据从一个数据源复制到SQL Server表中。使用这个类,可以指定数据源,目标表,以及列映射等详细信息,实现高效的数据导入。 5. **数据源准备...
对于大量数据的导入导出,`SqlBulkCopy`类提供了高效的方法,直接在数据库之间复制数据,而不必逐行插入。 11. **异步操作** ADO.NET支持异步操作,利用`BeginExecuteNonQuery`、`BeginExecuteReader`等方法,...