我需要将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脚本。
答案 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)