将INSERT INTO更改为UPDATE命令

时间:2019-08-06 22:02:29

标签: sql sql-server

我需要将INSERT语句转换为具有两千行的UPDATE。

我已经使用SSMS导入/导出向导从文本文件中将值插入到我的TEST环境中,但是建议我应该使用UPDATE。

我使用RapidSQL创建INSERT脚本,但需要将其转换为UPDATE。 4位和5位数字值已存在于目标表中,并且可能会在WHERE语句中使用。感谢帮助!

INSERT INTO TRAPEZE.STOPS ( STOPID, USERLONGSTRING1 ) 
        VALUES ( 10268, 'Westbound Ford Rd @ 189B St' )
/

INSERT INTO TRAPEZE.STOPS ( STOPID, USERLONGSTRING1 ) 
        VALUES ( 9603, 'Eastbound Adams Rd @ Cowan (Flag)' )
/

目标列USERLONGSTRING1最终应包含值“ Westbound Ford Rd @ 189B St”,其中STOPID为10268。文本文件同时包含STOPID和位置值。

这是一个24x7的实时数据库,其中有许多依赖应用程序将其用于实时应用程序,因此不能选择截断。

我最初的INSERT语句是通过导入到TEST服务器中的STAGING表中创建的,但是我的DBA(破坏运动)不希望我创建其他表,他们只需要一个UPDATE脚本。

2 个答案:

答案 0 :(得分:1)

使用临时表,您的脚本更改将更容易:

declare @myTemp table (STOPID int, USERLONGSTRING1 varchar(200))

INSERT INTO @myTemp ( STOPID, USERLONGSTRING1 ) 
        VALUES ( 10268, 'Westbound Ford Rd @ 189B St' )

INSERT INTO @myTemp ( STOPID, USERLONGSTRING1 ) 
        VALUES ( 9603, 'Eastbound Adams Rd @ Cowan (Flag)' )

-- ...

update TRAPEZE.STOPS 
   set USERLONGSTRING1 = t.USERLONGSTRING1
from TRAPEZE.STOPS ts inner join @myTemp t on t.StopId = ts.StopId;

答案 1 :(得分:0)

我作弊,只是将值放入电子表格中,然后剪切并粘贴到记事本++中以添加引号klugey,但是它起作用了:

enter image description here