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

Talend 如何使用tJava将字段动态写入csv文件,talend,Talend,我使用Talend从表中提取数据库字段名,并将字段名中的“\u1”替换为“”后写入csv。我希望这些值与实际的头相对应 例如: 我的工作和下面的相似。 tJavaRow中的代码如下: for (java.lang.reflect.Field field: input_row.getClass().getDeclaredFields()) { String fieldName = field.getName(); String newFieldName = null; newF

我使用Talend从表中提取数据库字段名,并将字段名中的“\u1”替换为“”后写入csv。我希望这些值与实际的头相对应

例如:

我的工作和下面的相似。

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中直接使用它,它将只使用最后一个字段的名称作为值。
tJava和tFileOutputDelimited之间的tmap。您不能更改模式,因为它们在后端生成的java代码中被视为声明变量。

您的模式“|名|姓|”将转换为以下格式:
字符串First_Name=null
字符串Last_Name=null
因此,您不能动态更改这些架构列名。

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

现在,在将数据写入csv文件之前,请将context.columnName中的标题记录写入该csv文件。

写入头记录后,通过选中TFileOutputDifferentied中的“append”复选框将数据附加到该文件。

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

您的模式“|名|姓|”将转换为以下格式:
字符串First_Name=null
字符串Last_Name=null
因此,您不能动态更改这些架构列名。

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

现在,在将数据写入csv文件之前,请将context.columnName中的标题记录写入该csv文件。

在写入头记录后,通过选中TFileOutputDifferentied中的“append”复选框将数据附加到该文件。

这只是为了动态交换头吗?
tMap
看起来怎么样?上下文中存储了什么?@tobi6 context有columnname这只是关于动态交换头吗?
tMap
看起来怎么样?上下文中存储了什么?@tobi6 context有columnName我不太确定如何直接从tJavaRow将context.columnName写入csv,因为context.columnName值是动态的。我不太确定如何直接从tJavaRow将context.columnName写入csv,因为context.columnName值是动态的。
    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 );
     }
for (java.lang.reflect.Field field : input_row.getClass().getDeclaredFields()) {
    String fieldName = field.getName();
    context.columnName = context.columnName + "," + fieldName.replaceAll("_", " ");
}