Sql server 是否可以使用sqlxmlbulkload加载此xml?

Sql server 是否可以使用sqlxmlbulkload加载此xml?,sql-server,xml,xsd,sqlxml,Sql Server,Xml,Xsd,Sqlxml,是否可以使用sqlxmlbulkload将类似的xml加载到这些表中? xml: Sql server表: Create table b ([_id_b] int identity(1,1) NOT NULL ,[code] nvarchar(10) NULL ,Constraint PK_b primary key clustered ([_id_b]) ) ; Create table ds ([_id_ds] int identity(1,1) NO

是否可以使用sqlxmlbulkload将类似的xml加载到这些表中? xml:

Sql server表:

Create table b
    ([_id_b] int identity(1,1) NOT NULL
    ,[code] nvarchar(10) NULL
    ,Constraint PK_b primary key clustered ([_id_b])
    )
;
Create table ds
    ([_id_ds] int identity(1,1) NOT NULL
    ,[_id_b] int NOT NULL
    ,[ds] nvarchar(10) NULL
    ,[type] smallint not null constraint cs_type check ([type] between 1 and 2)
    ,Constraint PK_ds primary key clustered ([_id_ds])
    )
这个xml for sqlxmlbulkload的xsd模式应该是什么? 这不是一个容易的问题! 注意,我需要将标签
加载到一个表ds中,这些是多个标签。
有可能吗?

使用下面的语句,您将从XML中提取值。将此结果存储在表中应该相当简单:

DECLARE @xml XML=
'<a>
    <b>
    <code>1</code>
    <ds1>1.11</ds1>
    <ds1>1.12</ds1>
    <ds1>1.13</ds1>
    <ds2>2.11</ds2>
    </b>

    <b>
    <code>2</code>  
    <ds1>1.21</ds1>
    <ds1>1.22</ds1>
    <ds2>2.21</ds2>
    <ds2>2.22</ds2>
    </b>

    <b>
    <code>3</code>      
    <ds1>1.31</ds1>
    <ds2>2.31</ds2>
    <ds2>2.32</ds2>
    </b>

    <b>
    <code>4</code>      
    <ds2>2.41</ds2>
    </b>
</a>';
--询问

选择A.b.value('(code/text())[1],'nvarchar(10')作为b_代码
,B.ds.value('text()[1],'decimal(10,4)')作为ds_值
,B.ds.值('local-name(.),'nvarchar(100)')作为节点名
从@xml.nodes('/a/b')作为a(b)
交叉应用A.b.nodes('*[子字符串(local-name(),1,2)=“ds”]')作为b(ds)
结果

b   ds      NodeName
1   1.1100  ds1
1   1.1200  ds1
1   1.1300  ds1
1   2.1100  ds2
2   1.2100  ds1
2   1.2200  ds1
2   2.2100  ds2
2   2.2200  ds2
3   1.3100  ds1
3   2.3100  ds2
3   2.3200  ds2
4   2.4100  ds2
b   ds      NodeName
1   1.1100  ds1
1   1.1200  ds1
1   1.1300  ds1
1   2.1100  ds2
2   1.2100  ds1
2   1.2200  ds1
2   2.2100  ds2
2   2.2200  ds2
3   1.3100  ds1
3   2.3100  ds2
3   2.3200  ds2
4   2.4100  ds2