簡體   English   中英

將XML文件插入SQL Server

[英]Insert XML file into SQL Server

我正在嘗試將XML文件導入SQL表。 我找到了一些代碼來做這個,但我似乎無法讓它工作。 我在我的代碼中嘗試了一些變體,但此時我不確定問題是XML文件結構還是我的SQL。

下面是我正在使用的代碼以及XML文件(截斷為一個記錄)。

CREATE TABLE workspace.dbo.tbt_SED_XMLwithOpenXML
(
Id INT IDENTITY PRIMARY KEY,
XMLData XML,
LoadedDateTime DATETIME
)    

INSERT INTO workspace.dbo.tbt_SED_XMLwithOpenXML(XMLData, LoadedDateTime)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE() 
FROM OPENROWSET(BULK 'File.xml', SINGLE_BLOB) AS x;


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

SELECT @XML = XMLData FROM workspace.dbo.tbt_SED_XMLwithOpenXML WHERE ID =     '1' -- The row to process    

EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML


INSERT INTO workspace.dbo.tb_SED_Emails
SELECT email
FROM OPENXML(@hDoc, 'responseData/manifest/contact_data')
WITH 
(
email [varchar](128) 'email'
)


EXEC sp_xml_removedocument @hDoc
GO

XML文件示例:

<?xml version="1.0" encoding="utf-8"?>
<methodResponse>
<item>
    <methodName>
        <![CDATA[]]>
    </methodName>
    <responseData>
        <manifest>
            <contact_data>
                <email>jason.kang@stanfordalumni.org</email>
            </contact_data>
        </manifest>
    </responseData>
    <responseNum>
        <![CDATA[1]]>
    </responseNum>
    <responseCode>
        <![CDATA[]]>
    </responseCode>
</item>
</methodResponse>

嘗試使用內置的本機XQuery支持,而不是使用笨重的舊OPENXML

SELECT
    Email = XC.value('(email)[1]', 'varchar(255)')
FROM 
    workspace.dbo.tbt_SED_XMLwithOpenXML
CROSS APPLY 
    XMLData.nodes('/methodResponse/item/responseData/manifest/contact_data') AS XT(XC)

那應該為您輸出所需的電子郵件地址:

您正在使用錯誤的xPath表達式。

'responseData/manifest/contact_data'更改為'methodResponse/item/responseData/manifest/contact_data'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM