我有大约600条记录需要更新每条记录上的四个字段。我有excel中的数据。我知道我可以为每个字段做一个案例陈述,如此
UPDATE table
SET field1 =
CASE
WHEN id = '123' THEN '2012-01-01'
WHEN id = '234' THEN '2012-07-01'
... and so on...
END
WHERE id IN ('123','234', ...and so on...)
但这需要太长时间,为每个字段和行编写每个案例(4次)。也有太多错误的空间。
有更有效的方法吗?
答案 0 :(得分:1)
将数据导入临时表,然后在UPDATE
语句中加入目标表和登台表:
UPDATE
T
SET
Field1 = S.Field1,
Field2 = S.Field2,
...
FROM
TargetTable As T
INNER JOIN StagingTable As S
ON T.ID = S.ID
答案 1 :(得分:0)
您可以创建一个临时表,将数据插入其中,然后在select的更新中使用该临时表,如下所示:
CREATE TABLE #TempTable (id ..., field1 ..., ....)
INSERT INTO #TempTable (id, field1, field2, ...) VALUES ....
UPDATE
t
SET
t.field1 = tmp.field1
, t.field2 = tmp.field3
FROM
MyTable t
JOIN #TempTable tmp ON tmp.Id=t.id
您可以使用SqlBulkCopy
加快将数据加载到#TempTable
的速度。