批量插入sql server中的特定列

时间:2015-03-09 12:12:19

标签: sql-server

是否有办法在特定列上执行批量插入,即文件的列号与表的列号不匹配。

我想导入一个包含以下架构的文件:

Customer_ID,Customer_Name,Customer_Adress

客户'具有以下模式的表:

Customer_ID,Customer_Name,Customer_Adress, Customer_Phone,Customer_email

有可能吗?

由于

2 个答案:

答案 0 :(得分:3)

据我所知,你可以使用XML格式文件,也可能使用视图作为目标。

  

FORMATFILE =' format_file_path'

     

指定格式文件的完整路径。格式文件描述包含使用bcp创建的存储响应的数据文件   同一个表或视图上的实用程序。如果出现以下情况,则应使用格式文件:

     
      
  • 数据文件包含的列数多于或少于表格或视图。
  •   
  • 列的顺序不同。
  •   
  • 列分隔符各不相同。
  •   

https://msdn.microsoft.com/en-us/library/ms188365.aspx

答案 1 :(得分:0)

也许SqlBulkCopy可能对你有所帮助,然后你可以这样做:

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(db.ConnectionString))
            {
                bulkCopy.DestinationTableName = "Customer";
                bulkCopy.ColumnMappings.Add("Customer_ID", "Customer_ID");
                bulkCopy.ColumnMappings.Add("Customer_Name", "Customer_Name");

                DataTable dt = GetDataFromExcel(); // Get your data from the excel file

                dt.Columns[0].ColumnName = "Customer_ID";
                dt.Columns[1].ColumnName = "Customer_Name";

                bulkCopy.WriteToServer(dt);
            }