如何使用tJava将字段动态写入csv文件

时间:2017-07-04 19:44:54

标签: talend

我使用Talend从表中提取数据库字段名称,并在替换" _"之后写入csv。在"的字段名称中&#34 ;.我希望将这些值与实际标题相对应。

例如:

|First_Name|Last_Name|
|----------|---------|
|First Name|Last Name|

我的工作看起来与以下相似。 enter image description here

tJavaRow中的代码如下:

    for (java.lang.reflect.Field field: 
 input_row.getClass().getDeclaredFields()) {
 String fieldName = field.getName();
 String newFieldName = null;
 newFieldName = fieldName.replaceAll("_", " ");
 context.columnName = newFieldName;
 System.out.println("Field name is " + context.columnName );
     }

如何为csv文件中的每个字段获取此上下文变量的值?如果我在tmap中直接使用它,它只会将最后一个字段的名称作为值。 tmap我在tJava和tFileOutputDelimited之间。enter image description here

1 个答案:

答案 0 :(得分:0)

您无法更改架构,因为它们在后端生成的java代码中被视为声明的变量。

您的架构“ | First_Name | Last_Name | ”转换为如下:
String First_Name = null;
String Last_Name = null;
因此,您无法在飞行中更改这些架构列名称。

但是您可以使用所需的分隔符从您从数据库中检索的列名创建记录(让逗号

for (java.lang.reflect.Field field : input_row.getClass().getDeclaredFields()) {
    String fieldName = field.getName();
    context.columnName = context.columnName + "," + fieldName.replaceAll("_", " ");
}

现在,在将数据写入csv文件之前,请将 context.columnName 中的此标题记录写入该csv文件。
编写标题记录后,通过选中tFileOutputDelimitted中的“附加”复选框将数据附加到该文件。