`
zheyiw
  • 浏览: 1020459 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SqlBulkCopy大数据复制插入数据

    博客分类:
  • SQL
阅读更多

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";
    }
}

分享到:
评论

相关推荐

    SqlBulkCopy批量插入海量数据

    2. **设置目标表名**:通过设置SqlBulkCopy的DestinationTableName属性,指定要插入数据的目标表名。 ```csharp bulkCopy.DestinationTableName = "YourTableName"; ``` 3. **映射数据源列与目标列**:如果数据...

    c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)

    通常,你需要创建一个存储过程,然后通过调用这个过程来批量插入数据。例如,你可以创建一个接受`OracleDataTable`作为参数的存储过程,然后在C#中调用它: ```csharp OracleCommand cmd = new OracleCommand(...

    C# Access 大数据量 批量 效率 快速 导入

    在"C#大数据效率批量插入Access-demo"这个示例项目中,很可能是提供了一个实际的C#代码示例,演示了如何使用上述方法将大量数据高效地导入到Access数据库。通过分析和学习这个示例,开发者可以了解并掌握在C#环境下...

    SqlBulkCopy:SQL 批量复制是 ODBC 批量复制 API 的 .NET 包装器

    2. **设置目标表名**:通过`DestinationTableName`属性设定要插入数据的表名: ```csharp bulkCopy.DestinationTableName = "MyTable"; ``` 3. **映射源数据和目标列**:如果源数据和目标表的列不完全匹配,可以...

    npoi和sqlbulkcopy内库

    `SqlBulkCopy`是.NET Framework中的一个类,用于快速大量地将数据从一个数据源复制到SQL Server表中。它非常适合于一次性导入数十万甚至上百万条记录,其性能远超于普通的INSERT语句。使用SqlBulkCopy,你可以指定...

    ADO.net大数据量操作数据库实验

    2. **Bulk Copy(批量拷贝)**:在ADO.NET中,SqlBulkCopy类提供了快速批量插入数据的能力。它允许一次性将大量数据从DataTable或IDataReader对象复制到SQL Server表,大大提高了性能。使用时,首先创建SqlBulkCopy...

    C#、.Net平台大批量提交数据到数据库

    SqlBulkCopy允许快速将大量数据从DataTable或IDataReader对象复制到SQL Server表中,其性能远超传统的逐行插入。 其次,多线程并发提交是优化数据库操作的另一种方法。在处理大量数据时,可以通过创建多个线程,每...

    sql批量写入数据

    这个类提供了一种高效的方法,将DataTable、IDataReader或IList对象中的数据复制到SQL Server表中。例如: ```csharp using (var bulkCopy = new SqlBulkCopy(conn)) { bulkCopy.DestinationTableName = ...

    fromExcelToDb:此解决方案的目的是将数据从Excel传输到文本文件,然后再传输到数据库

    对于CSV文件,可以创建一个存储过程,接收文件路径作为参数,然后在存储过程中读取文件并插入数据。或者,可以在C#代码中使用SqlBulkCopy类,它专为大量数据的快速复制而设计。 在处理数据库时,确保正确设置数据库...

    BulkInserts:Projeto控制台示例,可以多次执行基本SQL

    `SqlBulkCopy` 是 .NET Framework 提供的一个类,专门用于快速地将大量数据从一个数据源复制到SQL Server表中。使用这个类,可以指定数据源,目标表,以及列映射等详细信息,实现高效的数据导入。 5. **数据源准备...

    ADO.net所有知识点总结及用法

    对于大量数据的导入导出,`SqlBulkCopy`类提供了高效的方法,直接在数据库之间复制数据,而不必逐行插入。 11. **异步操作** ADO.NET支持异步操作,利用`BeginExecuteNonQuery`、`BeginExecuteReader`等方法,...

Global site tag (gtag.js) - Google Analytics