XMLファイルを解析し、解析したXMLをSQLデータベースに保存する必要があります。私のXMLコンテンツにはいくつかのタグがあります<goods_item>
。タグが1つしかない場合は、正常に機能します。しかし、そうでなければ間違いがあります。
SQLクエリ:
declare @insert nvarchar(4000), @pathname varchar(200), @xml xml
set @pathname = 'D:\Tests\price1.xml'
create table #tmp_xml(xmldata xml)
set @insert = 'INSERT INTO #tmp_xml(xmldata) SELECT bulkcolumn
FROM OPENROWSET (BULK N''' + @pathname+ ''', SINGLE_BLOB) AS data'
exec sp_executesql @insert
select @xml = xmldata from #tmp_xml
INSERT INTO XML_import
SELECT
Tbl.Col.value('goods_level[1]','int'),
Tbl.Col.value('goods_isgroup[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_code[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_name[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_parent[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_art[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_buhart[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_inpack[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_packtxt[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_country[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_gtd[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_nds[1]', 'NVARCHAR(50)'),
Tbl.Col.value('goods_unit[1]', 'NVARCHAR(50)')
FROM @xml.nodes('//goods_item') Tbl(Col)
drop table #tmp_xml
そしてXML:
<data_exchange>
<goods_item>
<goods_level>1</goods_level>
<goods_isgroup>1</goods_isgroup>
<goods_code>51852</goods_code>
<goods_name></goods_name>
<goods_parent></goods_parent>
<goods_art></goods_art>
<goods_buhart></goods_buhart>
<goods_inpack>0</goods_inpack>
<goods_packtxt></goods_packtxt>
<goods_country></goods_country>
<goods_gtd></goods_gtd>
<goods_nds>0</goods_nds>
<goods_unit></goods_unit>
</goods_item>
<goods_item>
<goods_level>1</goods_level>
<goods_isgroup>1</goods_isgroup>
<goods_code>51852</goods_code>
<goods_name></goods_name>
<goods_parent></goods_parent>
<goods_art></goods_art>
<goods_buhart></goods_buhart>
<goods_inpack>0</goods_inpack>
<goods_packtxt></goods_packtxt>
<goods_country></goods_country>
<goods_gtd></goods_gtd>
<goods_nds>0</goods_nds>
<goods_unit></goods_unit>
</goods_item>
<goods_item>
<goods_level>1</goods_level>
<goods_isgroup>1</goods_isgroup>
<goods_code>51852</goods_code>
<goods_name></goods_name>
<goods_parent></goods_parent>
<goods_art></goods_art>
<goods_buhart></goods_buhart>
<goods_inpack>0</goods_inpack>
<goods_packtxt></goods_packtxt>
<goods_country></goods_country>
<goods_gtd></goods_gtd>
<goods_nds>0</goods_nds>
<goods_unit></goods_unit>
</goods_item>
</data_exchange>
これはSQLでの私の最初のプロジェクトです、多分私はばかげています:)