2012-10-24 60 views
0

我需要使用C#WinForms將Excel表單中的數據導入到數據庫中。每行都是一個'電力站點',有幾列數據進入'站點'表。每個網站還有其聯繫信息(姓名,電子郵件,電話),但該聯繫人可能存在或可能不存在於數據庫中。聯繫主鍵(標識字段)是Sites表中的外鍵,但該值在運行時不爲人知。用Excel中的兩個相關表進行批量插入

下面是一些Excel文件中包含的相關數據:

SITEID

聯繫人姓名

電子郵件

電話

下面是表:

Contacts 
(
    ContactID (identity) 
    ContactName 
    Email 
    Phone 
) 

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

如果聯繫人名稱+電子郵件+電話號碼不存在於表格中,則需要創建聯繫人名稱和電子郵件地址,並且需要爲站點插入新的身份信息(如果聯繫人已存在,則需要該聯繫人ID)。

什麼是解決此問題並獲得最快結果的最佳方法。在大多數情況下,Excel工作表中有1000多行。

+0

任何能幫助我的人? – cpiasecki

回答

0

最簡單的方法可能是使用sql bulkcopy將兩個excel文件批量裝載到登臺表中,然後使用幾個「insert into」語句在適當的表中查找適當的外鍵。

但是,由於1000多行不是很多(當然取決於+),因此您可以將它們都加載到內存中,並用適當的鍵直接插入目標數據庫。

+0

感謝您的迴應,因爲它只有大約1000行左右,所以我最終使用了2個表值參數。一個用於首先插入不同的聯繫人,然後插入網站並抓取與名稱,電子郵件和電話相匹配的外鍵。 – cpiasecki