我必须将一个数据库迁移到另一个。我有一个 dblink 让它更容易。知道我尝试从表格中复制列注释和描述。问题是类型是 CLOB。在新数据库中,我使用 VARCHAR2。我使用了一种解决方法并创建了一个全局临时表。
create global temporary table Comments
(id number,description clob, comment clob) ON COMMIT PRESERVE ROWS; -
insert into Comments Select id,description,comment from database.test@DBLINK;
现在我在表中有 52K 行。
现在我想在新数据库中创建新表测试。
CREATE TABLE "TEST"
(
"ID" NUMBER(9,0) NOT NULL ENABLE,
"NAME" VARCHAR2(255) ,
"DESCRIPTION" VARCHAR2(4000) ,
"COMMENT" VARCHAR2(4000) ,
CONSTRAINT "TEST_PK" PRIMARY KEY ("ID")
);
现在我尝试插入这些值:
insert into TEST(ID, NAME,DESCRIPTION, COMMENT)
select Test_seq.nextval,Name,
(select dbms_lob.substr(DESCRIPTION, 4000, 1) from Comments b where b.id =a.id),
(select dbms_lob.substr(COMMENT, 4000, 1) from Comments b where b.id =a.id),
from database.test@DBLINK a;
问题是插入值需要很长时间。我开始了它,但在 30 分钟后它没有完成。
有没有一种快速的方法可以在 varchar2 中转换 clob 并将它们插入到其他 Oracle 数据库中的表中?
感谢帮助!