c# - 将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)
解决方案
应该:
foreach (DataColumn column in csvFileData.Columns)
s.ColumnMappings.Add(column.ColumnName, column.ColumnName);
DataTables 和大多数 ADO.NET 类型早于泛型集合,因此当foreach
-ing 其集合(如 DataTable.Columns)时,您必须在 中提供目标类型foreach
以访问其属性和方法。
推荐阅读
- linux - 当 cut 命令没有返回任何值时返回零
- r - 按连续条件过滤行 - 分组依据
- asp.net - 无法返回内存流中生成的word文档供下载给用户
- excel - 当有2个姓氏时,如何将名字和姓氏分成两列
- javascript - 您可以添加甚至侦听器并将行为覆盖到 javascript 中的浏览器搜索文本功能吗?
- selenium - 如何验证我的点击事件选项卡选项已在硒中显示数据?
- java - 如何使用 Java web.xml 显示特定的错误消息?
- matlab - MATLAB 上的非线性方程组
- javascript - 使用自定义 Hooks 时获取特定的状态值(尝试使用 hooks 实现表单处理)
- css - Flexbox 溢出父 div