水壶可以从Oracle表中导出BLOB数据吗?

时间:2018-11-19 06:52:04

标签: kettle pentaho-data-integration

我有一个oracle表,其中有诸如Document(类型BLOB),扩展名(具有.pdf,.doc等值的VARCHAR2(10))和Document Description(VARCHAR2 (100))。我想导出这些数据并提供给我的客户。

这可以在水壶中完成吗?

谢谢

1 个答案:

答案 0 :(得分:0)

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

首先,仅选择构建文件名和SQL语句所需的列(id,用户名,记录日期等)。然后,我使用Select FirstName, LastName, Stuff( Concat( ',' + FirstName, ',' + LastName, ',' + StreetAddress, ',' + City, ',' + Country, ',' + PostalCode ), 1,1,'') From Client 步骤创建两个输出文件名(减去文件扩展名):

Modified Javascript Value

和动态SQL语句:

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

然后,在使用select将字段数减少为文件名和blob_query之后,我使用了var blob_query = "SELECT blob_column FROM dbo.table WHERE id = '" + id + "'"; 步骤(选择了“外部联接”)从数据库中检索blob。

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

显然,这比其他表/ SQL操作要慢得多,这是由于动态SQL步骤为每一行建立了单独的数据库连接... 但它可以工作。

祝你好运!