c# - C#如何忽略无效列
问题描述
我创建了以下内容SqlBulkCopy
以将 Excel 中的数据插入 SQL Server 数据库。如果我的 Excel 中有无效列,例如second_name
而不是last_name
,我的程序将忽略该列,而其他列中的数据将被添加到数据库中。
但是,使用下面的代码并没有发生这种情况。我收到一条错误消息
没有为一个或多个必需参数指定值
并且没有数据插入数据库。有人可以帮我解决这个问题吗?谢谢
string myexceldataquery = "select person_id,first_name,last_name,gender from [Sheet1$]";
try
{
string sexcelconnectionstring = @"provider=microsoft.ACE.OLEDB.12.0;data source=" + excelFilePath +
";extended properties=" + "\"excel 12.0;hdr=yes;\"";
con.Open();
OleDbConnection oledbconn = new OleDbConnection(sexcelconnectionstring);
OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);
oledbconn.Open();
OleDbDataReader dr = oledbcmd.ExecuteReader();
SqlBulkCopy bulkcopy = new SqlBulkCopy(con);
bulkcopy.DestinationTableName = "person";
while (dr.Read())
{
bulkcopy.ColumnMappings.Add("person_id", "person_id");
bulkcopy.ColumnMappings.Add("first_name", "first_name");
bulkcopy.ColumnMappings.Add("last_name", "last_name");
bulkcopy.ColumnMappings.Add("gender", "gender");
}
bulkcopy.WriteToServer(dr);
dr.Close();
oledbconn.Close();
MessageBox.Show("File imported into sql server.");
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
解决方案
推荐阅读
- python-3.x - sqlite3.InterfaceError:错误绑定参数 1 - 可能是不受支持的类型。很难找到我哪里出错了
- android - 命令失败:C:\Users\uesr\AppData\Local\Android\Sdk\platform-tools\adb
- reactjs - React 组件动画过渡
- python - 使用多列从宽到长转换并在 Python 中保持关系
- flutter - 为流添加新价值
- python - 如何使用批处理代码制作大字符串以在 python 中执行?
- ios - 项目反应性错误启动 iOS 无法检查应用程序包
- mysql - 将更改日志表加入事件表(SparkSQL)
- node.js - Node js登录使用passport-local在邮递员中工作,但在前端Vue JS中出错
- javascript - 在 js 中的 azure blob 上设置元数据