我需要读取这些数据,然后使用(如果可能的话)单个勺子转换将它们加载到oracle表中。
数据以两个文件的对存储。每对都有一个文件(data-type_yyyymmdd.txt),每行放置一行carriage-return
,字段之间没有分隔符。提取这些字段的关键是第二个文件(data-type_yyyymmdd.ref),其中包含沿着行映射这些字段的信息。我们来看一个例子:
data-type_yyyymmdd.ref文件布局:
OPERATION_ID A 011
USER A 008
DATE_TRANSACTION A 0008
TIME_TRANSACTION N 0004
第一列是字段名,第二列是数据类型(A =字母数字,N =数字),第三列是字段长度。列沿着线有固定的位置。
重要提示:这些对可能具有不同结构的REF文件,但具有相同类型的REF文件(由文件名中的data-type
标识)的对具有相同的结构。
data-type_yyyymmdd.txt文件布局:
此档案的一行
50593749120ABCDEFGH201701021444
此行的字段包含以下值:
OPERATION_ID=50593749120
USER=ABCDEFGH
DATE_TRANSACTION=20170102
TIME_TRANSACTION=1444
因此,pentaho转换必须读取这些文件,检索行/字段并将它们插入表中。
如何识别要插入这些数据的表?
密钥是data-type
文件名的一部分。我们有一组不同的表,它们的名称由这部分标识。每个表结构都等同于他的相关REF文件。例如:
此文件对userlogins_20170701.ref
和userlogins_20170701.txt
包含userlogins
oracle表的数据。让我们假设这一对具有与上述示例相同的结构。因此该表具有以下结构:
ID - numeric(16)
OPERATION_ID - varchar2(11)
USER - varchar2(8)
DATE_TRANSACTION - varchar2(8)
TIME_TRANSACTION - numeric(4)
所有表都将ID字段作为主键填充,由序列数据库填充。其他字段遵循REF文件结构。 A类型的字段映射到varchars字段,N映射到数字字段。
答案 0 :(得分:0)
如果.ref文件不会改变,你可以将源文件中的数据流转换为“将行复制到结果”,然后通过设置“为每一行运行此作业”来应用作业,然后为每一行应用剪切字符串组件并设置四个变量,然后你可以逐行存储在四列中。