我需要使用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多行不是很多(当然是取决于+),因此您可以将它们加载到内存中,并使用适当的密钥直接插入到目标数据库中。