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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将csv上传到sql server时,“给定的ColumnMapping与源或目标中的任何列都不匹配”相关的知识,希望对你有一定的参考价值。

我试图通过将CSV转换为Datatable将CSV上传到SQL服务器,然后将此Datatable插入到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");
            }
        }
    }

我不知道问题出在哪里?

是在DB连接?

(SqlConnection dbConnection = new SqlConnection(“Data Source = DESKTOP-N7OIK1O MSSQLSERVER02; Initial Catalog = nokia_Alarm; Integrated Security = SSPI)

答案

应该:

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

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

以上是关于将csv上传到sql server时,“给定的ColumnMapping与源或目标中的任何列都不匹配”的主要内容,如果未能解决你的问题,请参考以下文章

CSV 数据通过 Python 上传到 SQL 表时导致错误

将CSV文件中的数据导入到SQL Server 数据库中

Sqlcmd使用SQL Server存储过程将数据导出到csv

将 Excel 数据上传到 SQL Server 2005 时出错

将 CSV 文件上传到 SQL 服务器

将超过 255 个字符从 excel 导入到 sql server(上一个问题 - 如何使用 ssis 将文本限定 CSV 动态加载到 sql server)