我必须为表格计划转换。表结构类似于
COULMN1 CHAR(1)
COLUMN2 VARCHAR2(20)
COLUMN3 DATE
我需要根据以下逻辑转换此表:
要更新的行数很大(以百万为单位)。因此,我无法提供简单的更新声明,因为我只有有限的时间来执行此活动。 到目前为止,我有一个想法,即创建一个包含转换值的临时表;删除主表并使用原始表重命名临时表。
是否有任何身体有任何不同的想法?
答案 0 :(得分:2)
你可以尝试一次一点,例如:
UPDATE atable
SET column1 = 'X'
WHERE (column1 != 'X' OR column1 IS NULL)
AND column2 = 'XXX'
AND ROWNUM <= 100000;
这将在必要时更新前100,000行。改变口味。提交,冲洗并重复,直到显示“0行更新”。
答案 1 :(得分:0)
我不是DB pro&amp;这就是我的想法。
XXX的行数是否超过其他行?
如果是这样,创建一个表以使用XXX转储行,并将column1设置为X.
插入不是XXX的其余行
截断旧表。
从新表中插入旧表中的内容。
数据库专家可以评论/评论这种方法。
答案 2 :(得分:0)
如果用户想要在转换过程中查看新数据,您可以使用视图。
重命名您的表,例如[table_old],并创建一个新表[table_new],其中更新的值将被复制到。使用表[table]的原始名称创建视图,该表返回[table_new]的所有行以及[table_old]中不在[table_new]中的所有行。
转换完所有数据后,删除旧表和视图,然后将[table_new]重命名为原始表名。
希望这是一个清晰的描述!