gpt4 book ai didi

c# - Excel 到 SQL。 BulkCopy 的替代品?

转载 作者:行者123 更新时间:2023-11-30 21:16:04 25 4
gpt4 key购买 nike

我有一段代码使用 DataReader 和 SqlBulkCopy 将数据从 excel 电子表格复制到 MSSQL 表。它工作正常,直到我在表上创建了一个主键,但现在它失败了。我首先删除 SQL 表的内容,然后再用 excel 中的数据填充它。

由于我只移动了少量数据,我想知道是否有比使用 BulkCopy 更好的方法来完成此操作?

更新:下面是相关代码,我收到的错误是: “无法将数据源中String类型的给定值转换为指定目标列的float类型。”

using (OleDbConnection connection = new OleDbConnection(excelConnectionString))
{
connection.Open();
OleDbCommand cmd = new OleDbCommand
("SELECT Name, Date, Amount FROM ExcelNamedRange", connection);

using (OleDbDataReader dr = cmd.ExecuteReader())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "SqlTable";
bulkCopy.WriteToServer(dr);

}
}
}

最佳答案

SqlBulkCopy 自动映射字段。但是由于您添加了主键,因此默认映射不再有效。

您必须设置 ColumnMapping 以明确告诉您的 SqlBulkCopy 对象如何映射字段。

对除主键之外的所有字段执行此操作(假设您在 PK 上使用身份)。

例如:

_bulkCopyEngine.ColumnMappings.Add("fieldname_from", "fieldname_to");

关于c# - Excel 到 SQL。 BulkCopy 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5431735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com