2013-09-05 47 views
0

這是我的XML:XML數據節點所需要的值保存到數據庫中的表

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Computer Name="WH7" Processior="Intel(R) Core(TM)2 Duo CPU P9600 @ 2.66GHz" 
      Manufacturer="Dell Inc." Model="Latitude E6500" Domain="WORKGROUP" 
      RAM="3536 MB" ServiceTag="DGQKTJ1"> 
    <BIOS Manufacturer="Dell Inc." Version="Phoenix ROM BIOS PLUS Version 1.10 A19"/> 
</Computer> 

我要救根節點(即<Computer>)屬性值和子節點的值(即BIOS)爲Asset見下表。

Create Table Asset 
(
    AssetId int Identity(100, 1), 
    Name varchar(50), 
    Processor varchar(50), 
    Manufacturer varchar(100), 
    Model varchar(100), 
    Domain varchar(100), 
    RAM varchar(100), 
    ServiceTag varchar(100), 
    Version varchar(100) 
) 

任何人都請幫助我。

回答

0

您可以輕鬆地從<Computer>節點提取信息,並將其插入到Asset
PS:注意:這是一個處理器 - 不是 「processior」(無兩si

DECLARE @Input XML 

SET @Input = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Computer Name="WH7" Processor="Intel(R) Core(TM)2 Duo CPU P9600 @ 2.66GHz" 
      Manufacturer="Dell Inc." Model="Latitude E6500" Domain="WORKGROUP" 
      RAM="3536 MB" ServiceTag="DGQKTJ1"> 
    <BIOS Manufacturer="Dell Inc." Version="Phoenix ROM BIOS PLUS Version 1.10 A19"/> 
</Computer>' 

INSERT INTO dbo.Asset(Name, Processor, Manufacturer, Model, Domain, RAM, ServiceTag) 
    SELECT 
     Name = @Input.value('(/Computer/@Name)[1]', 'varchar(50)'), 
     Processor = @Input.value('(/Computer/@Processor)[1]', 'varchar(50)'), 
     Manufacturer = @Input.value('(/Computer/@Manufacturer)[1]', 'varchar(50)'), 
     Model = @Input.value('(/Computer/@Model)[1]', 'varchar(50)'), 
     Domain = @Input.value('(/Computer/@Domain)[1]', 'varchar(50)'), 
     RAM = @Input.value('(/Computer/@RAM)[1]', 'varchar(50)'), 
     ServiceTag = @Input.value('(/Computer/@ServiceTag)[1]', 'varchar(50)') 

但是,什麼是完全不清楚你是怎麼想的<BIOS>節點插入此表,你會如何把這兩個分開行 - 或者,如果他們有某種聯繫(所以你知道哪個BIOS屬於哪臺電腦... ..)

+1

非常感謝。它正在工作 – Indra

相關問題