2011-04-26 36 views
2

我很努力地使用Visual Studio將XML文件導入到SQL中。除了所有類型的數據轉換錯誤,我都會得到空白表格。嘗試使用Access XML導入功能,我得到了相同的結果 - 空白表。這個問題似乎與XML文件本身有關,因爲它的數據被寫入節點ID字段中,如下面的示例中所示。將XML導入到SQL中,其中定義了數據以代替列標識

<SUMMARY ID="BWR1" _Name="MLSummary"> 
    <_DATA_SET _Name="TotalBalance" _Value="125" /> 
    <_DATA_SET _Name="TotalUnsecuredBalance" _Value="100" /> 
    <_DATA_SET _Name="TotalCredit" _Value="20" /> 
    <_DATA_SET _Name="Count" _Value="16" /> 
    <_DATA_SET _Name="PublicCount" _Value="0" /> 
</SUMMARY> 

理想我想這個XML翻譯成與_Name和_Value SQL表欄目,讓 「TotalBalance」, 「TotalUnsecuredBalance」,125,20,等等都值。

create test_table ([_Name] nvarchar(max), _Value(int)) 

請問,如果您對如何做到這一點有什麼想法,請告訴我。

回答

1

我不是100%肯定我明白你試圖在這裏做什麼....

試試這個:

DECLARE @input XML = '<SUMMARY ID="BWR1" _Name="MLSummary"> 
    <_DATA_SET _Name="TotalBalance" _Value="125" /> 
    <_DATA_SET _Name="TotalUnsecuredBalance" _Value="100" /> 
    <_DATA_SET _Name="TotalCredit" _Value="20" /> 
    <_DATA_SET _Name="Count" _Value="16" /> 
    <_DATA_SET _Name="PublicCount" _Value="0" /> 
</SUMMARY>' 

SELECT 
    DataSet.value('@_Name', 'varchar(25)') AS 'Name', 
    DataSet.value('@_Value', 'varchar(25)') AS 'Value' 
FROM 
    @input.nodes('/SUMMARY/_DATA_SET') AS Summ(DataSet) 

這將返回一組行,看起來像這個:

Name    Value 
TotalBalance    125 
TotalUnsecuredBalance 100 
TotalCredit    20 
Count      16 
PublicCount    0 

這有幫助嗎?如果你有這個名稱/值對的列表 - 你想用這個做什麼?你有沒有可以插入的桌子?或者你想從這個創建一個表?在這一點上不完全清楚......

+1

非常感謝!這種方法適用於我。我只是使用select語句的輸出插入到預定義的表中。 – 2011-04-26 15:01:03