我一直在使用下面的代码SQL Server 2008中 - XML文件的导入部分
INSERT
INTO import.XMLCompanyDetail
(
XMLData
)
SELECT BulkColumn AS XMLData
FROM OPENROWSET (BULK '\\Server\Dir1\Dir2\Dir3\ExampleXML.xml', SINGLE_BLOB) AS XMLDATA
导入整个XML文件到一个临时表与XML数据类型然而正是我努力做的不仅是导入部分数据,请参阅下面的例子XML。理想情况下,我想要选择CoNum 123或CoNum 233并获取该元素中的其余数据。虽然我认为这意味着以某种方式得到relvent Row num并从那里开始工作。
<VN>
<CompanyList>
<Row num="1">
<CoNum>123</CoNum>
<CoName>Comp1</CoName>
<DInc>1950-01-06</DInc>
</Row>
<Row num="2">
<CoNum>233</CoNum>
<CoName>Comp2</CoName>
<DInc>1955-11-10</DInc>
<DDis />
</Row>
</CompanyList>
</VN>
如果任何人都可以用这种方式抛出一些语法,或者指向正确的方向,我将非常感激。
另外它的值得指出的是我在后面的过程中将数据分解到表中,但是到了这一点它迟到了,所以真的需要删除剩余的数据,或者只选择这个查询中的相关数据,或者来自import.XMLCompanyDetail表。
更新1:发现此链接http://www.simple-talk.com/sql/t-sql-programming/xml-data-modification-language-workbench/应该帮助。
更新2:我最终编码下面,可能不是最优雅的,但它似乎工作。花了十分钟的时间试图通过sp_executeSQL的参数传递变量,但无法使它工作,所以只是删除了下面的内容......将在实况之前的某个点添加QUOTENAME。
SET @SQL =
N'
UPDATE import.XMLCompanyDetail
SET XMLData.modify(''delete (//VN/CompanyList/Row[@num != ' + CONVERT(VARCHAR,@RowNum) + '])'')
'
EXECUTE SP_EXECUTESQL @SQL
欢呼的答复,这基本上是我在后面的过程中使用的语法。基本上上面的代码是在我的SP中,然后多个其他SP使用您的上述代码将各种值切分到其他表中。所以我真的需要为指定的COnum选择CONum,COname和DIC。或者将所有数据选择到import.XMLCompanyDetail并删除所有与未指定的CONum有关的其他信息。 Unfortuantley当我运行我的示例导入时,我不知道RowNumber,只有CONum,很多再次感谢。 – Pixelated 2010-11-05 16:40:28