T-SQL - 根据长列表ID更新长值列表

时间:2016-08-08 09:49:09

标签: sql-server tsql bulkupdate

这似乎是一项直接的任务,但我无法找到一个好的方法。

我有一长串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,...)

3 个答案:

答案 0 :(得分:2)

对于一次性作业,将文本转换为CSV或其他可由bcp.exe处理的格式,然后将其导入临时表,通过JOIN进行更新,然后删除临时表。

对于可重复的工作,我希望我们SSISflat file source数据,甚至直接Excel sourcesource the tablemerge the two sources,应用结果{{3 }}

答案 1 :(得分:1)

选择的答案是一个很好的方法,但为了完整性:当这是一次性任务,并且更新都遵循这样的简单模式时,将输入文本直接转换为一系列更新语句,使用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

快速而肮脏,但要小心谨慎,注意意外的语法错误。

答案 2 :(得分:0)

是我最后做的,我创建了一个临时表,我导入了所有值并通过连接更新