我有一个标题为Code的表,其中包含两个字段,ID和代码。将XML导入到未导入的SQL Server 2005数据中
我有一个XML文件:
<DataSet>
<scan>
<ID>4</ID>
<Code>420</Code>
</scan>
<scan>
<ID>5</ID>
<Code>420</Code>
</scan>
<scan>
<ID>6</ID>
<Code>420</Code>
</scan>
<scan>
<ID>4</ID>
<Code>420</Code>
</scan>
<scan>
<ID>5</ID>
<Code>420</Code>
</scan>
</DataSet>
和正在使用该
INSERT INTO code (id,code)
SELECT X.scan.query('id').value('.','INT'),
X.scan.query('code').value('.','VARCHAR(30)')
FROM (
SELECT CAST(x AS XML)
FROM OPENROWSET(
BULK 'C:\dataimport.xml',
SINGLE_BLOB) AS T(x)
) AS T(x)
CROSS APPLY x.nodes('dataset/scan') AS X(scan);
查询无差错运行,但没有数据被插入到代码表。 我看不到我在想什么。
感谢您的帮助。
感谢您的指导和帮助。知道当我得到相同的结果时我知道要寻找什么。 – Stan 2012-07-11 13:18:14
查询的.nodes()部分是否仅区分大小写?我在其他领域测试了区分大小写,这个案例似乎并不重要。我将scan.query更改为Scan.query,它工作正常。我认为.nodes('DataSet/scan')需要匹配XML中节点的大小写。那是对的吗?谢谢 – Stan 2012-07-11 13:37:22
这是区分大小写的xPath表达式。您在节点,查询和值中使用的字符串。 – 2012-07-11 13:39:47