我开发了一个带shell scripting
的ETL。
之后,我发现现有解决方案Talend open studio
。
我想在将来的任务中使用它。
但我的问题是我想要集成到数据库中的文件必须在结构中进行转换。这是我的结构:
19-08-02 Name appel ok hope local merge (mk)
juin nov sept oct
00:00:t1 T1 299 0 24 8 3 64
F2 119 0 11 8 3 62
I1 25 0 2 9 4 64
F3 105 0 10 7 3 61
Regulated F2 0 0 0
FR T1 104 0 10 7 3 61
我必须将其转换为平面文件格式。
talend
是否可以在将csv
文件中的数据整合到database
之前进行多次转换?
修改
这是我想在将数据集成到数据库之前实现的平面文件的示例(仅涉及第一行):
Timer,T1,F2,I1,F3,Regulated F2,FR T1
00:00:t1,299,119,25,105,0,104
00:00:t2,649,119,225,165,5,102
00:00:t5,800,111,250,105,0,100
答案 0 :(得分:2)
我们可以将任务分成三部分,即提取,转换,加载。
摘录强>
首先,您必须了解如何连接到源。使用Talend可以连接到不同类型的源,如数据库,XML文件,平面文件,csv等。它们被称为 tFileInput 或 tMySQLInput ,仅举几例
<强>变换强>
然后你必须告诉Talend如何将数据拆分成列。在您的示例中,这可能是空格,尽管分割可能很困难,因为字段Name
也被空格分割。
之后,由于它是一个行到列的转置,您必须在 tJavaRow 组件中编写一些Java代码,或者可以使用条件映射的 tMap 组件: (row.Name.equals("T1") ? row.value : 0)
<强>加载强>
然后转换将完成,您的数据可以存储在数据库,目标文件等中。例如,此处的组件将被称为 tFileOutput 或 tOracleOutput 。< / p>
<强>结论强>
是的,可以在Talend中构建您的ETL过程。如果你是Talend的新手,那么转置可能会有点复杂。但是如果你记住Talend逐行处理数据(正如你的脚本所做的那样,我认为)这不是一个大问题。