2009-12-22 75 views
0

我對SQL Server 2005有一個ETL類型要求。我是SSIS的新手,但我相信它會是正確的工具。使用SSIS加載XML

該項目涉及到一個會員卡獎勵系統。計劃中的合作伙伴每個月都會發送一個或多個XML文件,詳細說明上個月的合格交易。每個XML文件最多可以包含10,000條記錄。 XML的格式非常簡單,4個「標題」元素,然後是包含記錄元素的重複序列。關鍵記錄元素是card_number,partner_id和points_awarded。

該進程當前正在生產中運行,但它是作爲一個c#應用程序開發的,它爲每個記錄單獨運行插入。這是非常緩慢的,超過8個小時處理10,000個記錄文件。通過使用SSIS,我希望能夠提高性能和可維護性。

我需要做的:

  1. 收集文件
  2. 驗證對XSD的記錄
  3. 業務規則驗證。對於每個記錄,我需要確保提供了有效的partner_id和card_number。爲此,我需要對合作夥伴和卡片表執行查找。應將任何「不良」記錄剝離並寫入響應XML文件。這與請求XML格式相同,只是增加了一個error_code元素。 「好」記錄需要導入到一個表中。

我有點1和2工作正常。我還創建了一個XSLT來將XML轉換爲準備插入的平面格式。對於第3點,我開始在控制流程表面中使用ForEach循環容器控件,循環每個XML節點和SQL查找任務。但是,這需要每次查找時調用數據庫,並調用文件系統來寫出XML文件以查找「壞」和「好」記錄。

我相信通過在數據流表面上使用查找控件可以獲得更好的性能。不幸的是,我沒有使用數據流表面的經驗。

有沒有人有解決問題的最佳方法的建議?我在網上搜索了一些SSIS軟件包的例子,這些軟件包與我所需要的類似,但沒有發現 - 有沒有在那裏?

謝謝

Rob。

回答

1

SSIS經常用於加載數據倉庫,所以您的要求並不新鮮。看看this question/answer,以幫助您開始使用教程等

的for-each在控制流是通過目錄中的文件進行循環,在DB等數據流表是其中的記錄飛過從轉變源(你的XML文件)到目的地(表格)。

您確實需要查找其中的一種風格。 Google for「加載數據倉庫維度」;這將最終向您展示幾種有效使用查找轉換的技術。爲了扁平化XML(如果足夠簡單),我只是簡單地在數據流中使用XML源,XML任務是用於較重的東西。