【发布时间】:2017-09-19 07:13:16
【问题描述】:
我有一个包含大量行(几百万行)的数据库表 (db2)。我需要更改其中一列的数据类型。
在 DB2 LUW 中似乎没有办法直接更改列的数据类型(ALTER TABLE ALTER COLUMN SET DATA TYPE 不起作用)。所以我正在创建一个新列,将数据复制到它并删除旧列。
由于直接更新表不是一个好主意,因此我正在创建一个过程,该过程将一次更新和提交 10000 行。
鉴于此,我有以下问题:
- 在此处执行更新的最佳方式是什么? - 据我所知,光标允许一次迭代超过 1 行。一次更新 10000 行,然后提交并重复,直到表被更新是正确的方法吗?
- 有没有更好的方法来处理以更简单的方式更改列的数据类型的原始问题?
【问题讨论】:
-
不需要存储过程,用pk条件代替一次更新10000行。
-
@jarlh 我不需要循环并在某个时候停止吗?如果没有程序,我该怎么做?
-
什么 Db2 版本和平台?有哪些数据类型?您可以更改某些数据类型。并且有 ADMIN_MOVE_TABLE 来改变不兼容的类型。 ibm.com/support/knowledgecenter/SSEPGG_11.1.0/…
-
@data_henrik db2 10.5 LUW,从 varchar 更改为 clob。
-
如果平均行长度也发生显着变化,可能会对页面大小产生后续影响,因此请仔细考虑是否也需要更改表空间。 CLOB 列对它们在 SQL 中的使用方式也有限制,并且由于处理大对象的方式,您还可能会在应用程序代码方面受到影响。在进行此更改之前,请务必谨慎进行影响评估。
标签: sql stored-procedures db2