Sql server 是否可以使用sqlxmlbulkload加载此xml?
是否可以使用sqlxmlbulkload将类似的xml加载到这些表中? xml: Sql server表: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
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