kettle - 水壶可以从oracle表中导出BLOB数据吗?
问题描述
我有一个 oracle 表,其中有像 Document(BLOB 类型)、Extension(VARCHAR2(10) 之类的列,其值像 .pdf、.doc)和 Document Description(VARCHAR2 (100))。我想导出这些数据并提供给我的客户。
这可以在水壶中完成吗?
谢谢
解决方案
我有一个将图像存储在 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 output
step 输出到文件。它允许您从字段中提供文件名并为其提供要附加的文件扩展名。在内容选项卡上,所有框都未选中,格式为“无换行符”,压缩为“无”。唯一导出的字段是动态 SQL 步骤返回的“blob_column”,类型应为“binary”。
显然,由于动态 SQL 步骤为每一行建立单独的数据库连接,这比其他表/SQL 操作慢得多……但它确实有效。
祝你好运!
推荐阅读
- php - Woocommerce 网站上的 Bot 垃圾邮件过滤器请求
- android - 使用 app-bundle 时,我可以为“原始文件夹”获取不同的配置 APK 吗?
- excel - 根据单元格值使用 VBA 创建文件夹目录
- c - 用户空间中的信号处理如何获取 siginfo 和 ucontext?
- c# - 建议正确重载 NewFamilyInstance
- node.js - 了解 Express 中的中间件
- javascript - 单击 nightwatchjs 中的页面对象
- jquery - 使用特定元素拖放jquery移动项目
- javascript - 未设置 window.innerWidth
- sql - SSRS - 两个文本字段需要合并才能达到总数