将XML文件插入SQL Server

将XML文件插入SQL Server,sql,sql-server,xml,Sql,Sql Server,Xml,我正在尝试将XML文件导入SQL表。我找到了一些这样做的代码示例,但我似乎无法让它工作。我在代码中尝试了一些变体,但现在我不确定问题是XML文件结构还是SQL 下面是我正在使用的代码以及XML文件(截断为一条记录) XML文件示例: <?xml version="1.0" encoding="utf-8"?> <methodResponse> <item> <methodName> <![CDATA[]]>

我正在尝试将XML文件导入SQL表。我找到了一些这样做的代码示例,但我似乎无法让它工作。我在代码中尝试了一些变体,但现在我不确定问题是XML文件结构还是SQL

下面是我正在使用的代码以及XML文件(截断为一条记录)

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>

杰森。kang@stanfordalumni.org

尝试使用内置的本机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'

1)workspace.dbo.tb使用的电子邮件的结构在哪里。。。。。。。。。。。。。2) 键入路径而不是文件名。。例如:d:\File.xml而不是File.xml您遇到了什么错误?
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)