【问题标题】:CLOB to Zip fileCLOB 到 Zip 文件
【发布时间】:2022-01-03 17:39:03
【问题描述】:

我在 Oracle DB 中有包含 XML 文件的 CLOB 列。

如何创建包含来自 clob 列的所有 xml 文件的单个 zip 文件?

表中只有一行包含带有 xmls 的 CLOB 列

【问题讨论】:

  • 在您正在使用的数据库中,是否安装了 APEX?如果是这样,您可以使用APEX_ZIP 包:docs.oracle.com/en/database/oracle/application-express/21.2/…
  • @EJEgyed 不要认为它会起作用 xml 文件存在于单个 CLOB 列中我只想创建该 CLOB 列的 zip 文件(它只有一行)从 FILES_STORE 中选择实体; (只返回一行,但 CLOB 有 10xml)这里 ENTITY 列的内容是 xml 文件。 ENTITY 列是 CLOB 类型
  • 您已将其标记为pythonplsql,您想用哪种语言实现它?
  • @eduffy 如果你知道如何使用 Python 来做这件事,任何人都足够了。

标签: xml oracle plsql clob


【解决方案1】:

您可以利用APEX_ZIP 包查询您的CLOB 列并将它们全部添加到将存储在BLOB 中的压缩文件中。然后,您可以使用 BLOB 做任何您需要的事情。

DECLARE
    l_temp_blob      BLOB;
    l_dest_offset    INTEGER := 1;
    l_src_offset     INTEGER := 1;
    l_lang_context   INTEGER := DBMS_LOB.DEFAULT_LANG_CTX;
    l_warning        INTEGER;
    l_zip            BLOB;
    l_file_counter   PLS_INTEGER := 1;
BEGIN
    FOR i IN (SELECT entity
                FROM TB_INDEXFILES_STORE
               --Add whatever where clause you want here
               WHERE ROWNUM = 1)
    LOOP
        DBMS_LOB.CreateTemporary (lob_loc => l_temp_blob, cache => TRUE);

        DBMS_LOB.ConvertToBlob (dest_lob       => l_temp_blob,
                                src_clob       => i.entity,
                                amount         => LENGTH (i.entity),
                                dest_offset    => l_dest_offset,
                                src_offset     => l_src_offset,
                                blob_csid      => DBMS_LOB.DEFAULT_CSID,
                                lang_context   => l_lang_context,
                                warning        => l_warning);

        apex_zip.add_file (p_zipped_blob   => l_zip,
                           p_file_name     => 'file' || l_file_counter || '.xml',
                           p_content       => l_temp_blob);
                           
        l_file_counter := l_file_counter + 1;
    END LOOP;

    apex_zip.finish (l_zip);
    
    --Do whatever you want with your l_zip blob which is the zip file
END;
/

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 2014-05-24
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多