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
            {  
            }
        }
原文地址:https://www.cnblogs.com/Tpf386/p/7883925.html