使用Excel中的两个相关表批量插入

c# sql sqlbulkcopy

我需要使用C#WinForms将数据从Excel工作表导入数据库。每行都是一个“电力网站”,其中有几列数据进入“网站”表。每个站点还有一个“联系人”及其信息(名称,电子邮件,电话),但该联系人可能已存在,也可能不存在于数据库中。联系人主键(标识字段)是Sites表中的外键,但该值在运行时未知。

以下是Excel文件包含的一些相关数据:

SITEID

联系人姓名

电子邮件

电话

以下是表格:

Contacts
(
    ContactID (identity)
    ContactName
    Email
    Phone 
)

Sites
(
    SiteKey (identity)
    SiteID
    ContactID (foreign key)
)

如果该联系人名称+电子邮件+电话不存在于表中,则需要创建它并且需要将新标识插入到该站点的该行中(如果已存在联系人,则需要该ContactID)。

什么是最好的方法来达到这个并获得最快的结果。在大多数情况下,Excel表格中有1000多行。

热门答案

最简单的方法可能是使用sql bulkcopy将两个excel文件批量加载到staging表中,然后使用一些“ insert into ”语句将正确的外键查找到真实表中。

但是,由于1000多行不是很多(当然是取决于+),因此您可以将它们加载到内存中,并使用适当的密钥直接插入到目标数据库中。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因