暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 从clob字段生成XML文件

askTom 2017-11-03
630

问题描述

亲爱的

我想知道是否有可能从一个clob文件生成几个XML文件,例如:
A) clob字段采用XML格式。我只需要运行一个循环来导出新的XML文件中的每一行。
B) 这些文件需要在我的本地计算机中而不是在安装Oracle的服务器中导出Windows网络文件夹 (例如C:/Test)。


问候,
拉斐尔

专家解答

下面是一个使用select-inter处理1文件的示例。您可以轻松地将其修改为for-loop。

SQL> drop table t purge;

Table dropped.

SQL> create table t ( x clob );

Table created.

SQL>
SQL> declare
  2    c clob;
  3  begin
  4    insert into t values ( empty_clob())
  5    returning x into c;
  6
  7    c := q'{}}';
  8    loop
  9      c := c || '';
 10      exit when length(c) > 90000;
 11    end loop;
 12    c := c || '';
 13
 14    update t set x = c;
 15    commit;
 16  end;
 17  /

PL/SQL procedure successfully completed.

SQL> select length(x), x from t;

 LENGTH(X) X
---------- --------------------------------------------------------------------------------
     90190 }
SQL> DECLARE
  2    Lv_cursor PLS_INTEGER;
  3    Lv_file UTL_FILE.file_type;
  4    P_SubstrVal VARCHAR2(4000) ;
  5    lv_file_name VARCHAR2 (100):='testing.csv';
  6    P_Directory VARCHAR2(101) :='TEMP';
  7    crlf VARCHAR2(2) := chr(10)||chr(13);
  8    l_columnValClob CLOB;
  9    P_offset NUMBER :=1;
 10    P_amount NUMBER := 3000;
 11    l_clobLen NUMBER :=0;
 12  BEGIN
 13    Lv_cursor := DBMS_SQL.open_cursor;
 14    SELECT x
 15    INTO l_columnValClob
 16    FROM t;
 17
 18    l_clobLen := DBMS_LOB.GETLENGTH(l_columnValClob);
 19    Lv_file := utl_file.fopen(P_Directory,lv_file_name,'wb');
 20    WHILE P_offset < l_clobLen
 21    LOOP
 22      P_SubstrVal := dbms_lob.substr(l_columnValClob,P_amount,P_offset);
 23      utl_file.put_raw(Lv_file,utl_raw.cast_to_raw(P_SubstrVal));
 24      P_offset:=P_offset+P_amount;
 25    END LOOP;
 26    UTL_FILE.fclose(Lv_file);
 27  END ;
 28  /

PL/SQL procedure successfully completed.

SQL>
SQL>


现在,这将把文件写入 * 数据库 * 可以访问的文件夹。获取本地计算机的选项可能是数据库和客户端都可以访问的共享文件夹。

如果您只需要本地驱动器,则需要

-自己写东西 (如Java)
-使用SQL Developer,它具有 “导出为单独的文件” 选项
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论