有點背景,這是我的第一篇文章,但我從這個網站得到了很多解決方案。如果這是轉發,我表示歉意,但我一直無法找到一個好的解決方案,並且難以從其他地方拼湊出我想要的東西。如何根據條件從SQL Server寫入XML文件
我發現了一些有關從SQL讀取/導出XML的解決方案(在此處和Google上)。但我有一個具體的問題:我如何從表格中修改XML格式的文件?
我有一個臨時表,其中包含來自我的SQL 2012 STIG查詢的所有發現。我一直在將它導出到一個.csv文件,但我還想添加功能將結果導出到一個.xml文件。
這裏的.XML的例子:
<CHECKLIST>
<ID>
<SOME_DATA>
<ID_ATTRIBUTE>ID_Num</ID_ATTRIBUTE>
<ATTRIBUTE_DATA>123</ATTRIBUTE_DATA>
</SOME_DATA>
<SOME_DATA>
<ID_ATTRIBUTE>REF</ID_ATTRIBUTE>
<ATTRIBUTE_DATA>54</ATTRIBUTE_DATA>
</SOME_DATA>
<STATUS>Not_Reviewed</STATUS>
<FINDING_DETAILS></FINDING_DETAILS>
<COMMENTS></COMMENTS>
</ID>
<ID>
<SOME_DATA>
<ID_ATTRIBUTE>ID_Num</ID_ATTRIBUTE>
<ATTRIBUTE_DATA>124</ATTRIBUTE_DATA>
</SOME_DATA>
<SOME_DATA>
<ID_ATTRIBUTE>REF</ID_ATTRIBUTE>
<ATTRIBUTE_DATA>145</ATTRIBUTE_DATA>
</SOME_DATA>
<STATUS>Not_Reviewed</STATUS>
<FINDING_DETAILS></FINDING_DETAILS>
<COMMENTS></COMMENTS>
</ID>
我想要做的是值得的效果:
IF <CHECKLIST/ID/SOME_DATA/ID_ATTRIBUTE> = 'ID_Num'
AND <CHECKLIST/ID/SOME_DATA/ID_DATA> = @variable
FROM 'e:\stuff\test.xml'
SET <CHECKLIST/ID/COMMENTS> = @comments_variable
我認識到,上面的代碼塊一個完整的不正確的查詢迭代,但我希望你能得到我想要做的。
我很感激任何幫助。
自定義存儲過程(不是MS SQL本機)是HIGHLY不鼓勵。
我可以很容易地從@x變量導出到文件?或者它需要從一個表使用bcp? – blackmuttracing
是的,如果這是一次性的事情,你可以直接從t-sql寫入文件,但是如果SSIS的核心組件是你的系統,那麼SSIS可能就是這樣做的地方。 –
我將它發送到全局臨時表,然後通過BCP導回到.xml文件。這不是一件普通的事情。這是一年一度的事情,我有一整個7000k +查詢來檢查系統是否存在漏洞(180多項)。我只是想將它導出爲我們使用的DISA STIG Viewer可以讀取的.xml格式(因爲這最終是我們的IA導入到他們的系統中的東西)。根據你的回答,我能夠把它工作到我想要的。非常感謝你。 – blackmuttracing