2012-02-06 82 views
1

我想这个XML数据插入到SQL Server 2008中XML到SQL Server插入

<rewriteMap name="OldStaticUrl"> 
    <add key="/about/" value="/about" /> 
    <add key="/2march2012" value="/community/0770/welcome-to-electronic-musicians-march-2012-links-page/147452" /> 
</rewriteMap> 

我使用这个SQL查询

DECLARE @hdoc INT 
DECLARE @doc varchar(1000) 

SET @doc = '<rewriteMap name="OldStaticUrl"> 
       <add key="/about/" value="/about" /> 
       <add key="/2march2012" value="/community/0770/welcome-to-electronic-musicians-march-2012-links-page/147452" /> 
      </rewriteMap>' 

EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc 

SELECT vanity, originalurl 
    FROM Openxml(@hdoc, '/rewriteMap/add',1) 
    WITH (vanity varchar(1000), originalurl varchar(1000)) 

但我在结果集中越来越空,在事实上,如果我使用select * from openxml,我会得到多行,其中一些包含正确的数据。

回答

3

而不是vanityoriginalurl文字你应该分别使用keyvalue
试试此问题:

DECLARE @hdoc INT 
DECLARE @doc varchar(1000) 
SET @doc = '<rewriteMap name="OldStaticUrl"> 
       <add key="/about/" value="/about" /> 
       <add key="/2march2012" value="/community/0770/welcome-to-electronic-musicians-march-2012-links-page/147452" /> 
      </rewriteMap>' 
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc 
SELECT [key], value 
FROM Openxml(@hdoc, '/rewriteMap/add', 1) WITH ([key] varchar(1000), value varchar(1000)) 
+0

thanks that helps – Abbas 2012-02-06 20:46:53