【发布时间】:2016-06-23 21:32:37
【问题描述】:
我在 MS SQL Server 2012 中有一个表,看起来像下面显示的但有数百条记录
id | adminnumber |
1 006
2 012
3 239
4 546
5 123
6 637
我有一个 excel 表,其中包含对 adminnumber 字段的这数百条记录的建议更新,因此该表包含类似
adminnumber original | adminnumber change
006 673
012 134
239 435
546 783
123 347
637 903
是否可以编写脚本将 adminnumber 从原始 adminnumber 更新为 adminnumber 更改,是否可以在不创建临时表的情况下这样做?
【问题讨论】:
-
是的,这是可能的,是的,这是可能的。您是否尝试过任何方法来解决此问题?如果是这样,请提供您尝试过的方法并解释您发现哪些方法不起作用。
-
当然:(1) 将每条记录的 SQL
update发送到服务器 (2) 使用表变量(而不是临时表)聚合所有更新。但是,此选项一次限制为 1,000 个更新 (3) 创建一个 SSIS 包并根据请求通过 Excel VBA 执行它,(4) 将所有更新导出到CSV,将该 CSV 上传到共享位置可用于 SQL 服务器,然后使用OpenRowSet或BULK INSERT在服务器上更新...这些只是您拥有的多个选项中的一些...。尝试更具体。否则,我们无能为力。 -
@Ralph 谢谢我怎样才能达到 1 或 2?理想情况下,我只想运行 1 个查询来更新所有
-
只有一个查询?如果您只有 1,000 条记录(或更少)要更新,那么它将与表变量一起使用。否则,您将不得不向服务器发送多个 SQL 语句(每组 1,000 条)。要使用 VBA 建立与 SQL 的连接,您可以使用:stackoverflow.com/questions/30289095/… 要为 SQL 语句动态创建表变量,您可以使用:stackoverflow.com/questions/37861150/…
-
@Ralph 非常感谢非常有帮助!
标签: sql sql-server excel