首页 > 解决方案 > 水壶可以从oracle表中导出BLOB数据吗?

问题描述

我有一个 oracle 表,其中有像 Document(BLOB 类型)、Extension(VARCHAR2(10) 之类的列,其值像 .pdf、.doc)和 Document Description(VARCHAR2 (100))。我想导出这些数据并提供给我的客户。

这可以在水壶中完成吗?

谢谢

标签: kettlepentaho-data-integration

解决方案


我有一个将图像存储在 BLOB 列中的 MSSQL 数据库,并找到了一种使用动态 SQL 步骤将这些图像导出到磁盘的方法。

首先,仅选择构建文件名和 SQL 语句所需的列(id、用户名、记录日期等)。然后,我使用一个Modified Javascript Value步骤来创建输出文件名(减去文件扩展名):

outputPath = '/var/output/';
var filename = outputPath + username + '_' + record_date;
// --> '/var/output/joe_20181121'

和动态 SQL 语句:

var blob_query = "SELECT blob_column FROM dbo.table WHERE id = '" + id + "'";

然后,在使用 select 将字段计数减少到仅文件名和 blob_query 之后,我使用一个Dynamic SQL row步骤(选择了“Outer Join”)从数据库中检索 blob。

最后一步是使用Text file outputstep 输出到文件。它允许您从字段中提供文件名并为其提供要附加的文件扩展名。在内容选项卡上,所有框都未选中,格式为“无换行符”,压缩为“无”。唯一导出的字段是动态 SQL 步骤返回的“blob_column”,类型应为“binary”。

显然,由于动态 SQL 步骤为每一行建立单独的数据库连接,这比其他表/SQL 操作慢得多……但它确实有效。

祝你好运!


推荐阅读