我使用Talend从表中提取数据库字段名称,并在替换" _"之后写入csv。在"的字段名称中&#34 ;.我希望将这些值与实际标题相对应。
例如:
|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中直接使用它,它只会将最后一个字段的名称作为值。 tmap我在tJava和tFileOutputDelimited之间。
答案 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中的“附加”复选框将数据附加到该文件。