考虑以下三个文件:
1.csv [contains 3 fields: a, b, c]
2.csv [contains 4 fields: d, e, f, g]
3.csv [contains 2 fields: h, i]
我的任务是将所有三个文件加载到各自的表输出中。所以
File "*.csv" ->loads-> Table "*_csv"
我知道我可以使用"获取文件名"处理多个文件。步骤但是如何生成为每个文件创建目标表的DDL语句?我正在查看元数据注入步骤,但我不确定这符合我的需求。
有什么建议吗?
Pentaho Data Integration 7.0 Postgres RDS
答案 0 :(得分:0)
您可以在下面的过程中动态创建表。此过程中唯一的问题是创建具有相同名称的表。玩这个代码。我在mysql中创建了这段代码。先决条件是您必须以串联形式传递字段名称,例如' col1,col2,col3'。
delimiter $$
create procedure dynamic_table(col_concat varchar(2000),out query1 varchar(1000))
开始
声明我是整数;
声明v_count int;
声明v_col varchar(100);
设置i = 1;
选择LENGTH(col_concat) - LENGTH(REPLACE(col_concat,',',''))+ 1进入v_count;
设置query1 =(选择concat('创建表格表',转换(i,签名),'('));
while(i< = v_count)
DO
开始
选择replace(substring_index(col_concat,',',i),',',' _')为v_col;
set query1 =(选择concat(query1,v_col,' varchar(1000),'));
设置i = i + 1;
端;
结束;
选择query1;
set query1 = replace(query1,substring(query1,length(query1)-1,1),')');
选择query1;
端; $$
示例运行:调用dynamic_table(' col1,col2,col3',@ query1)