【发布时间】:2013-09-25 01:51:55
【问题描述】:
我正在使用 SQL Server 并拥有带有 XML 列的表。我的插入程序具有输入参数 XML 文档。有什么办法可以更新表中已经存在的 XML?
这是我表中的旧 XML:
<weather Location="Paris, France">
<forecast>
<description>Sky is clear</description>
<Date>2013-09-19</Date>
<MinTemp>13</MinTemp>
<MaxTemp>20</MaxTemp>
<Humidity>78</Humidity>
<Pressure>1024</Pressure>
<Windspeed>3</WindSpeed>
</forecast>
<forecast>
<description>Sky is clear</description>
<Date>2013-09-20</Date>
<MinTemp>14</MinTemp>
<MaxTemp>21</MaxTemp>
<Humidity>75</Humidity>
<Pressure>1020</Pressure>
<Windspeed>1</WindSpeed>
</forecast> .... 10 times this forecast
</weather>
这是我的新的:
<weather Location="Paris, France">
<forecast>
<description>Sky is clear</description>
<Date>2013-09-19</Date>
<MinTemp>14</MinTemp>
<MaxTemp>21</MaxTemp>
<Humidity>70</Humidity>
<Pressure>1000</Pressure>
<Windspeed>5</WindSpeed>
</forecast>
<forecast>
<description>Sky is clear</description>
<Date>2013-09-20</Date>
<MinTemp>17</MinTemp>
<MaxTemp>24</MaxTemp>
<Humidity>68</Humidity>
<Pressure>1024</Pressure>
<Windspeed>3</WindSpeed>
</forecast> .... 10 times this forecast
</weather>
我现在想要的是用我从新 XML 读取的值更新我的旧 XML。我知道我必须以某种方式通过我的旧 XML,我想我可以用 ...while(exist) 和修改来做到这一点,但是如何从我的新 XML 中读取我需要的值,如何读取假设是 9 月 19 日的数据,并在旧 XML 中更新 9 月 19 日,然后读取 9 月 20 日的数据,然后在旧 XML 等中更新 9 月 20 日等...?
感谢您的帮助...
【问题讨论】:
-
你看过modify()吗?
-
您想只更新几个单一属性 - 还是想用从该文件读取的新 XML 替换列中的整个 XML?
-
很难理解您希望如何更新 XML。也许您可以在您的问题中包含参数是什么样的,表中已经存在的 XML 是什么样的,以及您希望 XML 在更新后在表中是什么样的。预测应该更新还是只添加?有时应该删除它们吗?是否应该更新位置,或者可能使用它来查找应该添加预测的位置?
-
这两个 XML 文件具有完全相同的结构,我想从新文件中读取所有值并替换表中 XML 文件中的旧值。我要替换的值是最小和最大温度、压力、湿度和风速。基于属性 Location 我找到了我需要的 XML,只能有一个具有此 Location 和相同的第一个日期,所以这不是问题。所以,我有旧的 XML 和新的,我需要使用修改替换值。
-
很高兴我能提供帮助:)。
标签: sql sql-server xml xquery-sql