将多个 BLOB 合并到 TAR-Archive

Combine multiple BLOB to TAR-Archive

提问人:donvogel 提问时间:9/29/2023 更新时间:9/29/2023 访问量:47

问:

我有几个文本文件作为 CLOB 存储在一个表中,并希望使用 PL/SQL 将它们一起导出为 *.tar.gz 文件。 例如,该表如下所示:

create table my_table(
  content  clob,
  filename varchar2(100))

结果是通过utl_http发送到 Web 服务,因此我没有机会在客户端中执行此操作。

压缩和转换为 BLOB 不是问题。以有效格式组合它们会给我带来麻烦。

我找不到任何标准库,也不想实现 tar 算法。

Oracle PLSQL blob tar

评论

0赞 MT0 9/29/2023
编写一个用户定义的聚合函数来聚合 CLOB(这个答案给出了一个可以调整的 UDF 编写示例),然后在数据库中使用 Java 将文件合并到一个存档中(这个答案给出了一个从 zip 读取的示例,你可以调整它来创建 zip)。
1赞 Paul W 9/29/2023
最好不要使用 PL/SQL。在数据库外部编写一个工具,用于提取 CLOB 内容,将其写入磁盘,同时通过管道传输 tar 和 gz。即使使用SQLPlus等简单工具,也可以正确配置其设置并对输出进行一些shell清理。Python 和 perl 为获取数据提供了更强大的选项,但 tar/gz 部分留给操作系统去做。
0赞 donvogel 9/29/2023
Sory,我没有为我们的数据库应用程序提供 Java 支持。
0赞 donvogel 9/29/2023
不幸的是,我只有 PL/SQL 的过程和步骤是这样做的最佳时间点。不建议发送多个未压缩的文件。唯一的选择是首先将文件存储为 *.tar.gz。
0赞 MT0 9/29/2023
如果你没有 Java 支持,那么你可能不走运,因为 PL/SQL 并不真正支持存档格式,如果你不能使用支持存档格式的嵌入式语言(即 Java),那么你将不得不使用数据库外部的东西(正如 @PaulW 所建议的那样)

答: 暂无答案