首页 > 解决方案 > 将csv上传到sql server时,“给定的ColumnMapping与源或目标中的任何列都不匹配”

问题描述

我正在尝试通过将 CSV 转换为数据表然后将此数据表插入 SQL 数据服务器来将 CSV 上传到 SQL 服务器。CSV 已正确读入 Datatable,但在将数据插入 SQL 时发生此错误

“给定的列映射与源或目标中的任何列都不匹配”

这是我的代码:

static void InsertDataIntoSQLServerUsingSQLBulkCopy(DataTable csvFileData)
    {
        System.IO.File.Create("C:\\Users\\Rana\\Desktop\\inside.txt");
        using (SqlConnection dbConnection = new SqlConnection("Data Source=DESKTOP-N7OIK1O\\MSSQLSERVER02;Initial Catalog=nokia_Alarm;Integrated Security=SSPI;"))
        {
            System.IO.File.Create("C:\\Users\\Rana\\Desktop\\inside1.txt");
            dbConnection.Open();
            using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
            {
                System.IO.File.Create("C:\\Users\\Rana\\Desktop\\inside2.txt");
                s.DestinationTableName = "csv_Table";

                foreach (var column in csvFileData.Columns)
                    s.ColumnMappings.Add(column.ToString(), column.ToString());
                s.WriteToServer(csvFileData);
                System.IO.File.Create("C:\\Users\\Rana\\Desktop\\inside4.txt");
            }
        }
    }

不知道问题出在哪里?

它在数据库连接中吗?

(SqlConnection dbConnection = new SqlConnection("数据源=DESKTOP-N7OIK1O\MSSQLSERVER02;初始目录=nokia_Alarm;集成安全=SSPI)

标签: c#sql-servercsvwindows-servicesssms

解决方案


应该:

foreach (DataColumn column in csvFileData.Columns)
                    s.ColumnMappings.Add(column.ColumnName, column.ColumnName);

DataTables 和大多数 ADO.NET 类型早于泛型集合,因此当foreach-ing 其集合(如 DataTable.Columns)时,您必须在 中提供目标类型foreach以访问其属性和方法。


推荐阅读