我在DB2中有一个列类型为CLOB的表,我想将其转换为BLOB类型。我在这里的方法是创建一个具有BLOB类型的新列,将所有数据从CLOB列复制到BLOB列,删除CLOB列并重命名BLOB列。但是,我不知道如何做第二步,即更新数据从CLOB列到BLOB列。让我这样做的DB2的功能是什么?提前谢谢。
发布于 2018-02-26 14:46:31
由于您使用的是db2-LUWv11.1和AIX,因此可以考虑使用存储过程ADMIN_MOVE_TABLE来完成在线工作。在投入生产之前,请在开发和测试环境中仔细测试。通常,使用存储过程比手动执行存储过程更容易,特别是如果您正在学习,尽管您需要SQLADM或DBADM权限,并仔细阅读文档。
一个重要的细节是,您应该确保表将其数据、索引和长数据存储在不同的表空间中。这是最佳实践,无论您选择实现哪种方法,它都适用。
请参阅https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0055069.html上的ADMIN_MOVE_TABLE文档
如果您不想使用存储过程,也可以手动执行此操作,尽管您选择的方法可能会根据表中的行数和CLOB列的平均长度而有所不同。
对于具有较小平均CLOB列长度的极小行计数:
- add the blob column with appropriate size to the table (alter table ... add column )
- populate the new column with an UPDATE statement set blobcolumn = blob(clobcolumn).
- alter table ... drop column clobcolumn
- offline reorg table
- runstats
对于非平凡的行数或大型CLOBS
- create a new dedicated LONG tablespace if necessary
- create a new table, with the required blob column, and without the clob column, ensuring the LONG IN clause specifies correct tablespace
- declare a cursor for SELECT from oldtable , using BLOB(clobcolumn)
- use load from cursor to populate the new table
- runstats new table
- drop old table
- rename new table to be same as old table.
发布于 2019-08-18 08:01:51
您不能直接将Db2表中的列类型从CLOB更改为BLOB!!ALTER TABLE ALTER COLUMN SET DATA TYPE
语句仅允许更改以下数据类型的列:字符数字二进制
发布于 2018-02-25 19:33:18
我认为您可以直接更改Db2
表中的列类型:
ALTER TABLE {TABLE NAME} ALTER COLUMN {COLUMN NAME} SET DATA TYPE BLOB({SIZE})
CLOB
和BLOB
非常相似,主要的不同之处在于,BLOB
是用来存储大量文本内容(包含字符编码信息)的,而CLOB只是一个很长的二进制字符串(例如二进制文件)。
https://stackoverflow.com/questions/48974066
复制相似问题