zoukankan      html  css  js  c++  java
  • ms sql server 大批量导入

    BULK INSERT

    文章:BULK INSERT如何将大量数据高效地导入SQL Server

    可以首先在数据库建一个表Temp_tb,这个表作为导入数据的表,然后使用bulk insert导入,导入完毕后,再在数据库中通过自己的控制将Temp_tb数据导入到目标表中。

    这种方法可以解决只导入部分字段的问题。

    示例:

    Bulk insert 数据库名.用户名.表名  
    from '数据文件路径'  
    with  
    (  
    formatfile = '格式文件路径',  
    FirstRow = 2    --指定数据文件中开始的行数,默认是1  
    )  

    示例2

    BULK INSERT db_mgr.dbo.T_Student  
    FROM 'C:/student.data'  
    WITH  
    (  
        FORMATFILE = 'C:/student_fmt.xml'  
    )  

    SqlBulkCopy 块copy

    using (System.Data.SqlClient.SqlBulkCopy sqlBC = new System.Data.SqlClient.SqlBulkCopy(conn))   
    { sqlBC.BatchSize = 100000;   
    sqlBC.BulkCopyTimeout = 60;   
    sqlBC.DestinationTableName = "dbo.TableB";   
    sqlBC.ColumnMappings.Add("valueA", "Value1");   
    sqlBC.WriteToServer(dt);   
    } 

    例子2

            public void SqlBulkCopyForDataTable(string tableName, DataTable dt, out string msg)
            {
                msg = "";
                try
                {
                    using (SqlConnection conn = (SqlConnection)idataHelper.CreateConnection)
                    {
                        conn.Open();
                        using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(conn))
                        {
                            try
                            {
                                sqlbulkcopy.DestinationTableName = tableName;
                                sqlbulkcopy.ColumnMappings.Add("Id", "Id列");
                                sqlbulkcopy.ColumnMappings.Add("Name", "名字");
                                sqlbulkcopy.WriteToServer(dt);
                            }
                            catch (System.Exception ex)
                            {
                                msg = ex.ToString();
                                throw ex;
                            }
                            finally
                            {
                                conn.Close();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {  
                }
            }
  • 相关阅读:
    P1908 逆序对
    P3834 【模板】可持久化线段树 1(主席树)
    BZOJ 4300: 绝世好题
    Codevs 2185【模板】最长公共上升子序列
    P1439 【模板】最长公共子序列
    P3865 【模板】ST表
    【转】良心的可持久化线段树教程
    Codevs 1299 切水果
    P3388 【模板】割点(割顶)&& 桥
    P3805 【模板】manacher算法
  • 原文地址:https://www.cnblogs.com/Tpf386/p/7883925.html
Copyright © 2011-2022 走看看