• dataTable写入数据库(大数据写入)


    例1:

    connectionStr,链接字符串
    dataTableName, 数据库中对应表名
    sourceDataTable DataTable 要写入数据库的DataTable
    字段要和表一致

    public static void SqlBulkCopyByDataTable(string connectionStr, string dataTableName, DataTable sourceDataTable, int batchSize = 100000)
    {
    using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionStr))
    {
    using (System.Data.SqlClient.SqlBulkCopy sqlBulkCopy = new System.Data.SqlClient.SqlBulkCopy(connectionStr,
    System.Data.SqlClient.SqlBulkCopyOptions.UseInternalTransaction))
    {
    try
    {
    sqlBulkCopy.DestinationTableName = dataTableName;
    sqlBulkCopy.BatchSize = batchSize;
    for (int i = 0; i < sourceDataTable.Columns.Count; i++)
    {
    sqlBulkCopy.ColumnMappings.Add(sourceDataTable.Columns[i].ColumnName, sourceDataTable.Columns[i].ColumnName);
    }
    sqlBulkCopy.WriteToServer(sourceDataTable);
    }
    catch (Exception ex)
    {

    throw ex;
    }
    }
    }
    }

    例2:

    1. //省略连接字符串  
    2.  SqlConnection conn = new SqlConnection(".....");  
    3.  conn.Open();  
    4.  //初始化类  
    5.  using (System.Data.SqlClient.SqlBulkCopy sqlBC = new System.Data.SqlClient.SqlBulkCopy(conn))  
    6.  {  
    7.      //获取需要导入的数据表  
    8.      DataTable dt = GetDataTable();  
    9.   
    10.      //每10W条数据一个事物  
    11.      sqlBC.BatchSize = 100000;  
    12.   
    13.      //超时时间  
    14.      sqlBC.BulkCopyTimeout = 60;  
    15.   
    16.      //表名Users  
    17.      sqlBC.DestinationTableName = "dbo.Users";  
    18.   
    19.      //字段对应,分表为原数据表字段名,和导入数据库的字段名  
    20.      sqlBC.ColumnMappings.Add("Access_ID", "MSSQL_ID");  
    21.      sqlBC.ColumnMappings.Add("Access_Name", "MSSQL_Name");  
    22.      //sqlBC.ColumnMappings.Add("Access_...", "MSSQL_...");  
    23.      //sqlBC.ColumnMappings.Add("Access_...", "MSSQL_...");  
    24.   
    25.      //导入到数据库  
    26.      sqlBC.WriteToServer(dt); 
  • 相关阅读:
    centos7.9安装Oracle 19c数据库(rpm方式)
    tomcat配置404/500自定义错误页面
    centos7.7部署多个tomcat服务器
    Linux配置Tomcat实现双向SSL认证(使用keytool工具生成证书)
    C#方法的多值返回方式
    Unity 判断2D/3D坐标系下的一个点是否在指定的摄像机视野范围内
    Unity项目的APK在雷电模拟器上弹出 "XXX停止运行"或者“XXX屡次停止运行”
    Python调用Unity工程下CSharp代码中的静态方法
    C#如何屏蔽程序的多次启动
    Something about My Blog
  • 原文地址:https://www.cnblogs.com/it-xcn/p/5889379.html
Copyright © 2020-2023  润新知