将巨大的表列类型更改为Clob

时间:2014-02-20 11:52:06

标签: sql oracle plsql

背景: 我想将表格列从Long更改为Clob。

  • 我不允许创建/更改表空间
  • 该表格有10M +行

我尝试了什么:

  1. 只需将表格从long改为clob:

    • 返回完整的表空间错误 - ORA-01652"unable to extend temp segment by %s in tablespace %s"

  2. 从表中导出数据并插入新表中:

    • 出口只需要太长时间,按照目前的速度,出口需要数周时间。
  3. 正在运行"insert /*+ APPEND */ into new_table select * from old_table;"

    • 返回错误 - ORA-00997: "illegal use of LONG datatype"

1 个答案:

答案 0 :(得分:0)

只是另一种选择。 (始终在前期测试中进行测试)

  • 创建一个投射很长的function来填充。

  • 然后使用以下功能尝试第三个选项:

    将new_table select id,long_to_clob(myLob)插入/_ + + APPEND * /作为来自old_table的myclob;

  • 放下长场。

  • 添加新的clob字段。

  • 更新新字段。

    更新old_table o   SET new_field =(SELECT myclob FROM newTable n WHERE n.id = o.id) 在哪里1 = 1;