2011-12-08 30 views
0

我開發了汽車服務的自動化應用程序。我開始配件模塊,但我無法想象應該如何構建數據模型架構。建築配件架構和散裝插入

我已經在文本文件中逐行獲取數據(不是cvs或ext ..,因此,我通過子字符串拆分主題)。工廠每個月都會將數據文件發送到服務。它包括價格,名稱,代碼等。每個月價格都會更新。我認爲bulkinsert(和我做過的)是將數據轉換爲SQL的不錯選擇,但這不是我的問題的解決方案。我不希望重複的數據只是爲了獲得新的價格。我以爲只將價格插入到另一張桌子上,並在配件 - 配件價格之間建立關係,但有時候,一些新配件可能會添加到列表中,因此我必須檢查配件表的每一行。而另一方面,我必須保持配件數量,發票等。

順便說一下,他們每月發送70,000行。那麼,任何人都可以幫助我? :)

謝謝。

回答

1

70,000行不是一個大文件。您必須自己解析此文件,並根據其中包含的數據發佈普通的insertupdate語句。沒有必要對這種大小的數據使用批量操作。

最常見的方法來這樣的事情是寫一個接受的所有參數的簡單的SQL語句,然後做這樣的事情:

if(exists(select * from YourTable where <exists condition>)) 
    update YourTable set <new values> where <exists condition> 
else 
    insert into YourTable (<columns>) values(<values>) 

(或者,你可以嘗試重寫此語句使用merge T-SQL語句)

哪裏..​​.

  • <exists condition>代表任何你需要檢查,看看我F中的項目已經存在
  • <new values>是集Column = value報表要更新
  • <columns>列的列集將數據插入到用於項目
  • <values>是組值對應於之前的列列表

然後,您將循環遍歷文件中的每一行,將數據解析爲參數值,然後使用這些參數運行上述SQL語句。

+0

感謝您的回答。在我寫這篇文章之前,我通過「StreamReader」讀取文件並將其加載到DataTable中,並通過「SqlBulkCopy」發送。但你說過,我不需要BulkCopy。好吧,我同意,但在更新或插入數據之前,我應該應用於嚴重問題的工作流程是什麼?從數據庫中選擇數據並與新數據進行比較,然後插入新行並更新舊行不是我認爲的好答案:)我可以請求你的幫助嗎? – tuxm4n

+0

@ tuxm4n看我的編輯。 –

+0

感謝您的回答,我會嘗試一下。我會告訴結果:) – tuxm4n