我使用Talend从表中提取数据库字段名,并在将字段名中的"_“替换为”“之后将它们写入csv。我想让这些值对应于实际的标题。
例:
|First_Name|Last_Name|
|----------|---------|
|First Name|Last Name|我的工作看起来很像跟随者。

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。

发布于 2017-07-05 10:44:31
您不能更改模式,因为它们被视为在后端生成的java代码中声明的变量。
模式"|First_Name|Last_Name|“被转换为如下所示:
字符串First_Name =null;
字符串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中的“追加”复选框,将数据附加到该文件。
https://stackoverflow.com/questions/44913173
复制相似问题