XML到数据库

威巴夫

我有一个xml文件,如下所示:

     <?xml version="1.0" encoding="UTF-8" ?> 
- <DeliveryPackage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VersionNo="Q214" CreationTime="2014-04-16T02:29:04.000000000" MapVersion="IND 14 2 00" Language_Code_Desc="../DEFINITIONS/language.xml" Country_Code_Desc="../DEFINITIONS/country.xml" Supplier_Code_Desc="../DEFINITIONS/supplier.xml" XY_Type="WGS84" Category_Code_Desc="../DEFINITIONS/category.xml" Char_Set="UTF-8" UpdateType="BulkUpdate" Coverage="IND" Category="7997">
- <POI>
  <Action>Add</Action> 
  <SupplierID>3</SupplierID> 
- <Identity>
  <POI_Entity_ID>BEL_Q112FD_308076</POI_Entity_ID> 
- <Names>
- <POI_Name Language_Code="ENG">
  <Text>100 Raw Gym</Text> 
  </POI_Name>
  </Names>
  <Category_ID Type="NT">7997</Category_ID> 
  <Product_Type>23</Product_Type> 
  </Identity>
- <Locations>
- <Location>
- <Address>
- <ParsedAddress>
- <ParsedStreetAddress>
- <ParsedStreetName>
  <StreetName Language_Code="ENG">NH-1</StreetName> 
  </ParsedStreetName>
  </ParsedStreetAddress>
- <ParsedPlace>
  <PlaceLevel2 Language_Code="ENG">Punjab</PlaceLevel2> 
  <PlaceLevel3 Language_Code="ENG">Amritsar</PlaceLevel3> 
  <PlaceLevel4 Language_Code="ENG">Amritsar</PlaceLevel4> 
  </ParsedPlace>
  <CountryCode>IND</CountryCode> 
  </ParsedAddress>
  </Address>
- <GeoPosition>
  <Latitude>31.6294</Latitude> 
  <Longitude>74.81178</Longitude> 
  </GeoPosition>
- <MapLinkID>
  <LinkID>1027669120</LinkID> 
  <Side_of_Street>R</Side_of_Street> 
  <Percent_from_RefNode>70</Percent_from_RefNode> 
  </MapLinkID>
- <Confidence>
  <Match_Level>GeoPoint</Match_Level> 
  </Confidence>
  </Location>
  </Locations>
- <Contacts>
- <Contact Language_Code="ENG" Type="Main">
  <Number Preferred="YES" Type="Phone Number">+(91)-9988692233</Number> 
  </Contact>
  </Contacts>
  </POI>

我想在SQL Server表中插入所有属性,从操作到编号开始。我已经在第1列的三列中进行过尝试,如下所示:首先,我将完整的xml文件放在表“数据”中,然后使用以下代码:

DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)

SELECT @XML = XMLData FROM data

EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML


SELECT [Action],SupplierID,Poi_Entity_Id
FROM OPENXML(@hDoc, 'POI')
WITH 
(
[Action] [varchar](50) '@Action',
SupplierID [int] '@SupplierID',
Poi_Entity_Id [varchar](100) 'Poi_Entity_Id'
)


EXEC sp_xml_removedocument @hDoc
GO

但是在所有列中获取空值...我不想手动执行此操作,因为我的XML中有1000条记录。请帮忙

罗曼·佩卡

您的数据存储在元素中,而不是属性中,并且您忘记将DeliveryPackage节点添加到xpath中:

select
    T.C.value('Action[1]', 'nvarchar(128)') as [Action],
    T.C.value('SupplierID[1]', 'nvarchar(128)') as SupplierID,
    T.C.value('(Identity/POI_Entity_ID)[1]', 'nvarchar(128)') as POI_Entity_ID
from @XML.nodes('DeliveryPackage/POI') as T(C)

或者,如果您想使用openxml

declare @hDoc int

exec dbo.sp_xml_preparedocument @hDoc output, @XML

select
    [Action],SupplierID,Poi_Entity_Id
from openxml(@hDoc, 'DeliveryPackage/POI')
with 
(
    [Action] [varchar](50) 'Action[1]',
    SupplierID [int] 'SupplierID[1]',
    Poi_Entity_Id [varchar](100) '(Identity/POI_Entity_ID)[1]'
)

exec dbo.sp_xml_removedocument @hDoc

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Xml到数据库

来自分类Dev

XML解析到MySQL数据库

来自分类Dev

解析XML到数据库

来自分类Dev

oracle XML到数据库表

来自分类Dev

递归地将xml分解到数据库中

来自分类Dev

将多个行值从数据库传递到XML

来自分类Dev

用于将xml传递到数据库的SQL查询

来自分类Dev

将XML文件同步到MySQL数据库

来自分类Dev

数据库到数据库的通信

来自分类Dev

OleDB数据库到SQLite数据库

来自分类Dev

从数据库获取数据到ComboBox

来自分类Dev

发送数据到PHP数据库

来自分类Dev

SQLite数据库到数据类

来自分类Dev

从数据库返回数据到视图?

来自分类Dev

从Sql数据库到数组的数据

来自分类Dev

从数据库获取数据到模型

来自分类Dev

使用PHP将Wiktionary XML数据转储到MySQL数据库中

来自分类Dev

为什么从 XML 导入到 Access 数据库时数据被截断

来自分类Dev

从MySQL数据库到具有XML eport的PHP的法语字符失败

来自分类Dev

使用 XSLT 将 XML 导入文件格式化到数据库

来自分类Dev

从另一个域获取 XML 文件到 Mysql 数据库

来自分类Dev

JSON数组到MySQL数据库

来自分类Dev

插入到多对多数据库?

来自分类Dev

连接PHP到MSSQL数据库

来自分类Dev

从列表<>到数据库记录重复

来自分类Dev

保存并截图[图像]到数据库

来自分类Dev

枚举绑定到数据库

来自分类Dev

从数据库到JS再到Vue

来自分类Dev

从Windows到Mac的数据库从PHPmyadmin