【问题标题】:How Can i Validate datatable's Data before inserting it using SqlBulkCopy如何在使用 SqlBulkCopy 插入数据表之前验证数据表的数据
【发布时间】:2015-08-15 13:25:18
【问题描述】:

我正在使用 ExcelDataReader 将 3000 行从 Excel 工作表导入到数据表。

如何在使用 SqlBulkCopy.Writetoserver() 将这些行插入数据库之前验证这些行。

问题:

1.如何将我的数据表与其中一个 SQL Server 表的 TableScheme 进行比较。

2.我可以在插入之前验证 FK 约束和 PK 重复吗

3.如果我有这样的表,其中 SponsorID 列与 FK 到同一个表

ID - 姓名 - 年龄 - 关系 - Column4 - SponsorID

100 - Adam Michale - 32 - 他自己 - 1/1/2015 - 100

101 - 安娜迈克 - 29 - 妻子 - 1/1/2015 - 100

102 - 莎拉亚当 - 6 - 女儿 - 1/1/2015 - 100

是否可以使用 SqlBulkCopy 进行此类插入。

提前致谢。

如果有任何其他类似插入的方法,我将非常乐意听到

【问题讨论】:

  • 我的回答有用吗?
  • 谢谢蒂亚戈。对于问题一和二,是的,它是 usfel,但我不明白你对第三个问题的回答......你在上面看到的表格是 dbo.table 方案,这个 ID 是 IDENTITY .. 在我的 excel 中我没有此列也不是 SponsorID 列.. 但我可以为每条记录或另一个 SponsorID 设置一个赞助商名称,但我不知道如何使用此 ID
  • 我明白了,你可以有类似的东西:select * from SqlTable as table1 inner join SqlTabel as table2 on table1.Name = table2.SponsorName,问题是如果你有同名的人.. .=(

标签: c# asp.net sql-server datatable sqlbulkcopy


【解决方案1】:
  1. 您可以使用 SQL 语言查询您的 Excel 文件并进行比较。请参见下面的示例:

    SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\excel-sql-server.xls', [Sheet1$])

在此link 上查找有关分布式查询的更多选项。

  1. 您可以在sql数据上查询已有的数据,并与excel进行比较,以验证PK/entry是否重复。

  2. 您可以使用 Excel 中的 ID 创建一列 OldID。然后使用 OldID 参考将赞助商 ID 更新为新 ID。

【讨论】:

    猜你喜欢
    • 2014-12-10
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2012-12-12
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多