0

我必须将数据从一个数据库迁移到另一个数据库。作为准备,我们已经将 CLOB 和 BLOB 数据提取到位于 Oracle 服务器上的单独文件中。数据库在不同的表中包含几个 CLOB 和 BLOB 列,这些列已经用 NULL 值对所有这些行进行了初始化。

如何将文件的内容加载到现有行的 CLOB 或 BLOB 列中。我知道主 ID 键和文件名的确切名称......但我没有找到将这些文件读入表中的有效方法。

例如, SQL Loader 似乎只能添加行或替换整个表。但我只想更新单列。如果需要,我们可以使用 SQL Loader 或普通的 PL/SQL 脚本——不管怎样。

感谢你的帮助。

4

1 回答 1

1

遵循以下思路应该可以完成这项工作。您希望对其进行参数化,并为 BLOB 数据创建一个单独的版本。不确定您是否也有字符集问题。

declare
    l_bfile   bfile := bfilename('DATA_PUMP_DIR','cpy.log');
    l_data    clob;
    l_soffset NUMBER := 1;
    l_doffset NUMBER := 1;
    l_lang    NUMBER := 0;
    l_warn    NUMBER;
begin
    DBMS_LOB.createtemporary (lob_loc => l_data,cache => TRUE, 
                                 dur => DBMS_LOB.call);
    dbms_lob.fileopen( l_bfile, DBMS_LOB.file_readonly );
    DBMS_LOB.loadclobfromfile(l_data, l_bfile, DBMS_LOB.LOBMAXSIZE, 
           l_soffset, l_doffset, 0, l_lang, l_warn  );
    dbms_lob.fileclose(l_bfile);
    update f_lob set value = l_data where id = 1;
end;
/
于 2010-08-30T23:28:49.647 回答