Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据从xml保存到sql 2008?_Sql_Sql Server_Xml_Sql Server 2008_Soap - Fatal编程技术网

如何将数据从xml保存到sql 2008?

如何将数据从xml保存到sql 2008?,sql,sql-server,xml,sql-server-2008,soap,Sql,Sql Server,Xml,Sql Server 2008,Soap,如何将数据从xml保存到sql 2008 SQL表: [dbo].[位置] [ID][int]标识1,1不为空, [ImoNo][numeric]8,0不为空, [sid][numeric]5,0空, [VesselName][nvarchar]20空, [time][datetime]不为空, [lat][numeric]9,2空, [lon][numeric]9,2空, [sog][numeric]9,2空, [cog][numeric]9,2空, [hdg][数字]9,2空, [eta][

如何将数据从xml保存到sql 2008

SQL表:

[dbo].[位置] [ID][int]标识1,1不为空, [ImoNo][numeric]8,0不为空, [sid][numeric]5,0空, [VesselName][nvarchar]20空, [time][datetime]不为空, [lat][numeric]9,2空, [lon][numeric]9,2空, [sog][numeric]9,2空, [cog][numeric]9,2空, [hdg][数字]9,2空, [eta][datetime]空, [NextPort][nvarchar]20空 XML文件:

发现2艘船只。 符合事实的 9456159 780 特伦塔 特伦塔 1832900 7570400 2014-01-14T08:28:45Z 0 9.5 22 22 2014-01-15T12:00:00 广阳 1872560 7589000 2014-01-14T07:00:00Z 1. 10.8 25 25 9144055 789 维帕瓦 维帕瓦 1757160 7536240 2014-01-13T19:00:00Z 2. 9.4 21 21 1658200 7476480 2014-01-13T07:00:00Z 3. 8.4 29 29 1630000 7455400 2014-01-13T03:00:03Z 4. 8.83 34 34 2014-01-15T08:00:00 广阳 我尝试使用此查询,但得到错误消息

'XQuery [nodes()]: The names "SOAP-ENV" and "ns1:" do not denote a namespace.'
声明@xml 声明@character VARCHARMAX 选择@character=x.y 来自OPENROWSET批量“C:\Users\Nale\Desktop\POS.xml”,单字符 -把安培表修好 选择@xml=REPLACE@character'&','&;' -获取理货信息 选择 x、 y.value'ns1:imono/text[1],'NUMERIC 8,0'imono, x、 y.value'ns1:sid/text[1],'NUMERIC 5,0'sid, x、 y.value'ns1:VesselName/text[1],'NVARCHAR 20'VesselName, x、 y.value'ns1:pasttrack/time/text[1],'DATETIME'时间, x、 y.value'ns1:pasttrack/lat/text[1],'NUMERIC 9,2'lat, x、 y.value'ns1:pasttrack/lon/text[1],'NUMERIC 9,2'lon, x、 y.value'ns1:pasttrack/sog/text[1],'NUMERIC 9,2'sog, x、 y.值'ns1:pasttrack/cog/text[1],'NUMERIC 9,2'cog, x、 y.值'ns1:pasttrack/hdg/text[1],'NUMERIC 9,2'hdg, x、 y.值'ns1:pasttrack/eta/text[1],'DATETIME'eta, x、 y.value'ns1:pasttrack/NextPort/text[1],'NVARCHAR 20'NextPort 从@xml.nodes'SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:GetPositionsResponse/Body/shipsWithPositions'作为xy XML文件位于本地磁盘上

我将使用一些sql查询,或者将数据从xml保存到sql表的最佳方法是什么

使XML有效 发现2艘船只。 符合事实的 9456159 780 特伦塔 特伦塔 1832900 7570400 2014-01-14T08:28:45Z 0 9.5 22 22 2014-01-15T12:00:00 广阳 1872560 7589000 2014-01-14T07:00:00Z 1. 10.8 25 25 9144055 789 维帕瓦 维帕瓦 1757160 7536240 2014-01-13T19:00:00Z 2. 9.4 21 21 1658200 7476480 2014-01-13T07:00:00Z 3. 8.4 29 29 1630000 7455400 2014-01-13T03:00:03Z 4. 8.83 34 34 2014-01-15T08:00:00 广阳 二,。将名称空间添加到查询中

DECLARE @xml XML
DECLARE @character VARCHAR(MAX)

SELECT @xml = x.y
FROM OPENROWSET( BULK 'C:\Users\Nale\Desktop\POS.xml', SINGLE_CLOB ) x(y)


-- Get the tally information
;WITH XMLNAMESPACES  (
    'http://www.fleettracker.de/api/1.0' as ns1,
    'http://www.w3.org/2001/XMLSchema-instance' AS xsi,
    'http://schemas.xmlsoap.org/soap/envelope/' AS e
)
SELECT
    x.y.value('(ns1:imono/text())[1]', 'NUMERIC (8,0)') ImoNo,
    x.y.value('(ns1:sid/text())[1]', 'NUMERIC (5,0)') sid,
    x.y.value('(ns1:VesselName/text())[1]', 'NVARCHAR (20)') VesselName,
    x.y.value('(ns1:pasttrack/time/text())[1]', 'DATETIME') time,
    x.y.value('(ns1:pasttrack/lat/text())[1]', 'NUMERIC (9,2)') lat,
    x.y.value('(ns1:pasttrack/lon/text())[1]', 'NUMERIC (9,2)') lon,
    x.y.value('(ns1:pasttrack/sog/text())[1]', 'NUMERIC (9,2)') sog,
    x.y.value('(ns1:pasttrack/cog/text())[1]', 'NUMERIC (9,2)') cog,
    x.y.value('(ns1:pasttrack/hdg/text())[1]', 'NUMERIC (9,2)') hdg,
    x.y.value('(ns1:pasttrack/eta/text())[1]', 'DATETIME') eta,
    x.y.value('(ns1:pasttrack/NextPort/text())[1]', 'NVARCHAR (20)') NextPort
FROM @xml.nodes('e:Envelope/e:Body/ns1:GetPositionsResponse/body/shipsWithPositions') AS x(y)