T-SQL - 根据一长串 ids 更新一长串值

T-SQL - Update long list of values based on long list of ids

这似乎是一个简单的任务,但我真的找不到好的方法。

我有一长串 id 和一长串要为字段(单个字段)更新的对应值

id = 1 | field = value_1 
id = 2 | field = value_2
.......................
id = n | field = value_n 

我可以将字段放在 2 个列表中(或我选择的任何其他方式),但我必须遍历并更新每个值..

最好的方法是什么?

添加更多细节:值在一个大 excel 中,但这与处理 excel 无关,我会将值列表复制粘贴到.. 文本中。我在想 2 个长列表 (id1, id2,..) (value_1, value_2,...)

对于一次性工作,将文本转换为 CSV 或其他可由 bcp.exe 处理的格式,然后将其导入临时 table,通过 JOIN 进行更新,然后降低温度 table.

对于重复table的工作,我会SSIS: flat file source the data or even directly Excel source, source the table, merge the two sources, apply the result back into the table

我最后做了什么,我创建了一个临时文件 table,我导入了其中的所有值并通过连接更新

选择答案是一个很好的方法,但为了完整性:当这是一次性任务,并且更新都遵循这样一个简单的模式时,将输入文本直接转换为一系列更新语句,使用 Excel 公式并向下填充或使用文本编辑器的替换功能。

示例:

id     newvalue
1      foo
2      grok

变成

id     newvalue    generated statement
1      foo         update dbo.mytable set field1 = 'foo'  where id = 1
2      grok        update dbo.mytable set field1 = 'grok' where id = 2

快速而肮脏,但要小心应用并注意意外的语法错误。