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

Posted

技术标签:

【中文标题】将csv上传到sql server时,“给定的ColumnMapping与源或目标中的任何列都不匹配”【英文标题】:"The given ColumnMapping does not match up with any column in the source or destination" when uploading csv to sql server 【发布时间】:2019-02-07 18:44:42 【问题描述】:

我正在尝试通过将 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)

【问题讨论】:

确保表 nokia_Alarm.dbo.csv' exist in the DataTable` 中的所有列,反之亦然。 是的,我查过了,它们都在表中 【参考方案1】:

应该是:

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

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

【讨论】:

然后使用 DDL 表和 DataTable 列列表更新您的问题,可能包括 DataTable.WriteXmlSchema docs.microsoft.com/en-us/dotnet/api/… 的输出

以上是关于将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)