2009-11-20 59 views
1

我正在爲我在C#中的業務開發一個價目表管理程序(Prototype在Win Forms中,但我正在考慮使用WPF作爲MVVM學習練習的最終ap)。納入遺留數據的最佳方式

我們的EMS系統基於COBOL後端,並且至少保持3年,因此我無法直接訪問它的數據。我想定期從他們的EMS系統中提取數據,以確保定價保持同步(並以不可編輯的方式向倉庫中的用戶提供一些其他信息)。我正在看的是...

使用WinBatch每晚自動運行報告,然後使用Monarch將文本報告轉換爲平面文件(.xls?) 將文件放入文件夾並寫入小ap將其讀入並將其添加到數據庫中

我應該如何將其添加到數據庫? (SQL Express)我可以有一張每次都完全被替換的表,但我在這個大多數時候都是初學者,而且我擔心如果在數據庫被價目表ap使用時更換了整個表,會發生什麼情況。

Mike

+0

我有三個答案,我傾向於codymanix's,想法? – 2009-11-22 18:01:48

回答

1

如果截斷並重新填充整個表你應該這樣做在一個單一的交易,並放置一個全表鎖。這更安全,速度更快。

您也可以更新所有更改的行,然後插入新的(缺少的行),然後刪除在此運行中未更新的所有行(在每行中插入某種版本號以確定此行)。

0

首先從遺留應用程序創建一個.txt文件。然後使用批量插入將其拉入工作表中,以便清理需要進行的任何清理。使用t-sql進行清理。然後運行t-sql將新數據插入到適當的表中和/或更新數據已更改的行。如果有多人記錄,請分批進行插入和更新。將所有這些作爲一項工作安排在數據庫不繁忙的幾個小時內運行。

您當然可以在SSIS中做到最好,但我不知道Express是否可以提供這一切。

0

價格上次更新時是否有任何字段/表格可以告訴您?如果是這樣,你可以拉最近更新的行,並更新數據庫....假設你的cobol應用程序的數據存儲中有一個可用的唯一主鍵。

這不會是最新的,因爲您將它作爲夜間腳本運行以更新新應用程序使用的數據庫。您可以創建一個.net腳本來查詢cobol數據存儲庫,以便查找用戶正在查找的任何價格,並且如果cobol數據存儲庫更新時間比您記錄的更新,則更新SQL Server記錄。

(我不熟悉COBOL所有,只是拋出想法在那裏)