在我的时区很好。
我想更新一个表,使用的RDBMS是Sybase ASE 15。 因为该表包含近100万行,我必须在生产中运行此更新 环境,我想更新并提交每10000行。我没有Sysbase的经验。 任何人都可以帮助我,如果可能的话,可以提供一些代码示例
提前致谢 最诚挚的问候
答案 0 :(得分:1)
尝试这样的事情:
-- declaration
declare @counter int,
@MaxId int,
@Rows int
select @counter=0 -- start position
select @Rows=10000 -- how many rows do you want to update in one time
select @MaxId = count(*)
from tab
-- updating in loop
while @counter<@MaxId+@Rows
begin
update tab
set col1 = 'val'
where id between @counter and @counter+@Rows-1
select @counter=@counter+@Rows
end
go
修改强>
如果表格tab
没有Unique
或PK
列,则可以添加identity
列,如下所示
alter table tab
add id numeric(10,0) identity
比你可以运行上面的解决方案。
答案 1 :(得分:0)
如果无法在生产中添加标识列并且您有一个包含日期的列,则还可以使用日期作为ID来更新某些时间段:
SELECT @slicedStartDate = @startDate
SELECT @slicedEndDate = @startDate
WHILE (@slicedEndDate < @endDate)
BEGIN
SELECT @slicedEndDate = dateAdd(hh, @timeSlice, @slicedStartDate)
UPDATE xxxx WHERE date_column >= @slicedStartDate AND date_column < @slicedEndDate
SELECT @slicedStartDate = @slicedEndDate
END