我一直在學習SQL Server(痛苦而緩慢),並最終得到了該死的東西來做我想做的事情,但有一個XML導入過程讓我絆倒向上。我有一個複雜的XML文件,如採樣(在此XML的詳細信息可以在這裏找到:http://wiki.eve-id.net/APIv2_Corp_AssetList_XML):在SSIS中將複雜XML轉換爲可用格式
<?xml version='1.0' encoding='UTF-8'?>
<eveapi version="2">
<currentTime>2010-12-19 07:15:16</currentTime>
<result>
<rowset name="assets" key="itemID" columns="itemID,locationID,typeID,quantity,flag,singleton">
<row itemID="961254083" locationID="30001161" typeID="17177" quantity="1" flag="0" singleton="1" />
<row itemID="961256074" locationID="30001161" typeID="27672" quantity="1" flag="0" singleton="1" />
<row itemID="1270658107" locationID="30002583" typeID="17176" quantity="1" flag="0" singleton="1" />
<row itemID="1000474513775" locationID="30002583" typeID="17407" quantity="1" flag="0" singleton="1">
<rowset name="contents" key="itemID" columns="itemID,typeID,quantity,flag,singleton">
<row itemID="1000515794105" typeID="255" quantity="1" flag="27" singleton="1" />
</rowset>
</row>
<row itemID="1000474513607" locationID="30002583" typeID="17406" quantity="1" flag="0" singleton="1">
<rowset name="contents" key="itemID" columns="itemID,typeID,quantity,flag,singleton">
<row itemID="1000515772705" typeID="17686" quantity="1" flag="27" singleton="1" />
</rowset>
</row>
</rowset>
</result>
<cachedUntil>2010-12-19 23:40:24</cachedUntil>
</eveapi>
因此,很自然SSIS snarks我,當我嘗試導入此使用XML源代碼的工具,因爲它是'複雜'的XML(嘟gr)。理想情況下,我希望發生的事情是能夠將這件事情變成SSIS數據流,以便將其轉儲到我的SQL數據庫中的表中。時髦的東西來與額外的嵌套行,這些是嵌套在其他項目內的項目,我想保留嵌套信息。理想情況下,我想要做的是創建一個包含父項的itemID的新列,如果它位於頂層,則爲0或null。這也需要重複父項的位置ID。因此,最終的輸出將是一個包含以下行的表:itemID,locationID,typeID,quantity,flag,singleton,parentID。鑑於上面的例子中輸入,輸出應該是這個樣子(假設.csv格式):
itemID, locationID, typeID, quantity, flag, singleton, parentID
961254083, 30001161, 17177, 1, 0, 1, 0
961256074, 30001161, 27672, 1, 0, 1, 0
1270658107, 30002583, 17176, 1, 0, 1, 0
1000474513775, 30002583, 17407, 1, 0, 1, 0
1000515794105, 30002583, 255, 1, 27, 1, 1000474513775
1000474513607, 30002583, 17406, 1, 0, 1, 0
1000515772705, 30002583, 17686, 1, 27, 1, 1000474513607
從我一直在使用Google(谷歌AAH的精彩功率)這是可能使用XSLT,但是在我剛剛瞭解到如何使用SSIS並在兩週前以這種方式使用XML文件時,我對此類知識的瞭解並不多。我希望獲得一些幫助,可以構建一個可以執行此轉換的XSLT文件,或者其他可能更好的方法。
另外需要注意的一點是:無論是哪種解決方案,都不能涉及任何手動輸入。我這樣做是爲了從人工輸入系統中遷移出來,所以任何手動輸入都會完全破壞這樣做的目的。
非常感謝!
XSLT是一個好主意。你可以發佈你的預期產出的例子嗎? – helderdarocha
**如果**我正確理解了您的XML源文檔,則需要將它導入兩次,分成兩個不同的表格 - 因此您需要兩個XSLT樣式表,每個導入一個。 –
嗨Helderdarocha。因此,最終我需要它以表格格式輸出,其中包含以下列:itemID,locationID,typeID,數量,標誌,單身人士,parentID。所有這些都是原始XML,除了parentID,對於嵌套項目,它將爲0或null,併爲嵌套項目引用父項目。 –