快速更新100行以上列的值?

时间:2013-10-01 18:48:34

标签: sql sql-server

我有一个包含3个字段的表

Example_Table
-------------
ID (identity)
SomeKey
SomeValue

此表中可能保存了150个值。显然,除了其中6个值之外的所有值都已更改-_-'我有一个包含新值的excel文档,并且我不期待尝试对其进行更新。作为程序员,我不禁觉得有一种比手动更好的方法,或者更糟糕的是丢弃表并用新值重建它。

有谁知道快速做这样的大规模更新?电子表格中的新值按照与它们配对的键(desc)进行逻辑排序/排序。

3 个答案:

答案 0 :(得分:2)

如果您使用的是SQL Server 2012 Management Studio

  1. 确保Excel中的列首先排列SomeValue,然后排列SomeKey(或ID)。
  2. 突出显示整个范围,单击 Ctrl + C ,切换到Management Studio中的新查询窗口,然后按 Ctrl + V
  3. 在第一行的开头突出显示光标,按住 Shift + Alt 并使用向下箭头滚动到最后一行。
  4. 类型:

    UPDATE dbo.Example_Table SET SomeValue = '
    
  5. 重复3.将光标放在值之后,然后键入:

    ' WHERE SomeKey =
    
  6. 现在您已经有了一系列可以单独或完全运行的UPDATE语句。

    如果您使用的是以前的版本

    1. 确保Excel中的列首先排列SomeValue,然后排列SomeKey(或ID)。
    2. 在SomeValue之前插入一个新列。
    3. 在新列的第一行中,键入:

      UPDATE dbo.Example_Table SET SomeValue = '
      
    4. 在该单元格的右下角,使用十字拖动以在所有适用的行中重复该值。

    5. 在SomeValue和SomeKey之间重复2.和3.这次输入:

      ' WHERE SomeKey = 
      
    6. 对新列重复4.
    7. 突出显示整个范围,单击 Ctrl + C ,切换到Management Studio中的新查询窗口,然后按 Ctrl + V
    8. 您可能需要搜索并替换Tab字符。突出显示一个,点击 Ctrl + C Ctrl + H Tab 并制作确保Replace with:为空字符串,然后点击Replace All(除非您的数据自然包含标签)。

答案 1 :(得分:1)

将电子表格数据复制到新工作簿。使用键和带有值的列删除除列之外的所有内容。

在它们之间根据需要插入新列,并在它们之间添加UPDATE sql代码。

你最终会得到像

这样的东西
Column A                               Column B                 Column C           Col D
UPDATE Example_Table SET SomeValue = '|   value from column B |' WHERE SomeKey = '| value from column D '

(抱歉标记 - 欢迎格式化帮助)

稍微削减&粘贴你将有150个更新语句。将它们复制到SQL Server并执行。您可能希望先将它们粘贴到记事本或等效文件中,以检查标签等。

这应该是一个5分钟的工作。

答案 2 :(得分:1)

有几种方法可以将Excel文档中的数据导入SQL Server。 Microsoft列出了几种方法here.就个人而言,我一直使用管理工作室附带的导入向导。

无论哪种方式,你都应该得到一个包含键和值的表。然后你可以使用这样的查询:

UPDATE mt
SET Value = temp.Value
FROM myTable mt
INNER JOIN importedTable temp on mt.Key = temp.Key